> 文档中心 > python-numpy库笔记

python-numpy库笔记

文章目录

    • 对象
    • 数据类型
    • 数组属性
    • 创建数组
    • 从已有的数组创建数组
    • 从数值范围创建数组

对象

import numpy as npa = np.array([1, 2, 3])print(a)# 多于一个维度b = np.array([[1, 2], [3, 4]])print(b)# 最小维度,指定生成数组的最小维度c = np.array([1, 2, 3, 4, 5], ndmin=2)print(c)# dtype参数,数组元素的数据类型,可选d = np.array([1, 2, 3], dtype=complex)print(d)

数据类型

import numpy as np# 使用标量类型dt = np.dtype(np.int32)print(dt)# int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替dt = np.dtype('i4')print(dt)# 字节顺序标注# 字节顺序是通过对数据类型预先设定  来决定的。  意味着大端法(最重要的字节存储在最小的地址,即高位组放在最前面)。dt = np.dtype('>i4')print(dt)# 首先创建结构化数据类型dt = np.dtype([('age', np.int8)])print(dt)# 将数据类型应用于 ndarray 对象dt = np.dtype([('age', np.int8)])a = np.array([(10,), (20,), (30,)], dtype=dt)print(a)# 类型字段名可以用于存取实际的 age 列dt = np.dtype([('age', np.int8)])a = np.array([(10,), (20,), (30,)], dtype=dt)print(a['age'])# 定义一个结构化数据类型 student,包含字符串字段 name,整数字段 age,及浮点字段 marks,并将这个 dtype 应用到 ndarray 对象。student = np.dtype([('name', 'S20'), ('age', 'i1'), ('marks', 'f4')])print(student)student = np.dtype([('name', 'S20'), ('age', 'i1'), ('marks', 'f4')])a = np.array([('abc', 21, 50), ('xyz', 18, 75)], dtype=student)print(a)

python-numpy库笔记

数组属性

import numpy as np# ndarray.ndim 用于返回数组的维数,等于秩a = np.arange(24)print(a.ndim)  # a只有一个维度# 调整其大小b = a.reshape(2, 4, 3)  # b现在有三个维度print(b.ndim)# ndarray.shape 表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。# 比如,一个二维数组,其维度表示"行数"和"列数"。# ndarray.shape 也可以用于调整数组大小。a = np.array([[1, 2, 3], [4, 5, 6]])print(a.shape)# 调整数组大小。a = np.array([[1, 2, 3], [4, 5, 6]])a.shape = (3, 2)print(a)a = np.array([[1, 2, 3], [4, 5, 6]])b = a.reshape(3, 2)print(b)# ndarray.itemsize 以字节的形式返回数组中每一个元素的大小# 一个元素类型为 float64 的数组 itemsize 属性值为 8(float64 占用 64 个 bits,每个字节长度为 8,所以 64/8,占用 8 个字节),又如,一个元素类型为 complex32 的数组 item 属性为 4(32/8)# 数组的 dtype 为 int8(一个字节)x = np.array([1, 2, 3, 4, 5], dtype=np.int8)print(x.itemsize)# 数组的 dtype 现在为 float64(八个字节)y = np.array([1, 2, 3, 4, 5], dtype=np.float64)print(y.itemsize)# ndarray.flags 返回 ndarray 对象的内存信息x = np.array([1, 2, 3, 4, 5])print(x.flags)

创建数组

import numpy as np# numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组x = np.empty([3, 2], dtype=int)print(x)  # 数组元素为随机值,因为它们未初始化。# numpy.zeros创建指定大小的数组,数组元素以 0 来填充# 默认为浮点数x = np.zeros(5)print(x)# 设置类型为整数y = np.zeros((5,), dtype=np.int_)print(y)# 自定义类型z = np.zeros((2, 2), dtype=[('x', 'i4'), ('y', 'i4')])print(z)# numpy.ones创建指定形状的数组,数组元素以 1 来填充# 默认为浮点数x = np.ones(5)print(x)# 自定义类型x = np.ones([2, 2], dtype=int)print(x)

从已有的数组创建数组

import numpy as np# 将列表转换为 ndarrayx = [1, 2, 3]a = np.asarray(x)print(a)# 将元组转换为 ndarrayx = (1, 2, 3)a = np.asarray(x)print(a)x = [(1, 2, 3), (4, 5)]a = np.asarray(x)print(a)x = [1, 2, 3]a = np.asarray(x, dtype=float)print(a)# numpy.frombuffer 用于实现动态数组。# numpy.frombuffer 接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象# buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在原 str 前加上 bs = b'Hello World'a = np.frombuffer(s, dtype='S1')print(a)# numpy.fromiter 方法从可迭代对象中建立 ndarray 对象,返回一维数组。list = range(5)  # 使用 range 函数创建列表对象it = iter(list)x = np.fromiter(it, dtype=float)  # 使用迭代器创建 ndarrayprint(x)

从数值范围创建数组

import numpy as np# numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象x = np.arange(5)print(x)# 设置了 dtypex = np.arange(5, dtype=float)print(x)# 设置了起始值、终止值及步长x = np.arange(10, 20, 2)print(x)# numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的# 设置起始点为 1 ,终止点为 10,数列个数为 10a = np.linspace(1, 10, 10)print(a)# 设置元素全部是1的等差数列a = np.linspace(1, 1, 10)print(a)# 将 endpoint 设为 false,不包含终止值# 如果将 endpoint 设为 true,则会包含 20。a = np.linspace(10, 20, 5, endpoint=False)print(a)# retstep如果为 True 时,生成的数组中会显示间距,反之不显示a = np.linspace(1, 10, 10, retstep=True)print(a)b = np.linspace(1, 10, 10).reshape([10, 1])print(b)# numpy.logspace 函数用于创建一个于等比数列# 默认底数是 10a = np.logspace(1.0, 2.0, num=10)print(a)# 将对数的底数设置为 2a = np.logspace(0, 9, 10, base=2)print(a)