创建数组
import numpy as np
ls = [[1, 2, 3], [4, 5, 6]]
print(np.array(ls, dtype=np.int32)) # 把列表转为数组,dtype指定数组元素的数据类型
print(range(1, 10, 2)) # range函数只能生成整数序列
print(np.arange(1, 10, 2, dtype=np.float32)) # 创建等间隔整数序列数组,等同于内置的range函数
print(np.arange(1.5, 10, 1.5, dtype=np.float32)) # 创建等间隔小数序列数组
a1 = np.ones((2, 3), dtype=np.int8) # 创建全1数组
a2 = np.zeros((2, 3), dtype=np.float32) # 创建全0数组
a3 = np.full((2, 3), 6, dtype=np.int8) # 创建全值数组
print('a1:', a1, 'a2:', a2, 'a3:', a3, sep='\n')
a4 = np.linspace(1, 10, 7, endpoint=True) # 创建指定元素数量的一维数组,包含起止点,第三个参数为数组元素的总数量
print('a4:', a4)
# 从函数创建数组
f = lambda m, n: m + n
a5 = np.fromfunction(f, (3, 3)) # 每个元素为行列索引值的和
f2 = lambda m, n: m * 2 + n
a6 = np.fromfunction(f2, (3, 3)) # 每个元素为行索引值的2倍与列索引值的和
print('a5:', a5)
print('a6:', a6)
数组的属性
ls = [[1, 2, 3], [4, 5, 6]]
a = np.array(ls, dtype=np.uint8)
print(a.ndim) # 数组维度值
print(a.shape) # 数组形状
print(a.size) # 数组元素数量
print(a.dtype) # 数组元素的数据类型
数组维度转换
# 数组重排
import numpy as np
a = np.arange(6)
print(a)
a1 = a.reshape(2, 3) # 返回原数组的视图
a1[0] = 100
print(a)
print(a1)
a.resize(3, 2) # 在位修改原数组,没有返回值
print(a)
a2 = a.ravel() # 把数组折叠成一维,返回原数组的视图
a2[:] = 200
print(a)
print(a2)
a3 = a.flatten() # 把数组折叠成一维,生成新的独立数组
a3[:] = 300
print(a)
print(a3)
b = np.array([1, 2, 3])
b1 = b[:, np.newaxis] # 增加一个维度,返回原数组的视图
b1[0] = 100
print(b)
print(b1)
b2 = b[np.newaxis, :] # 增加一个维度,返回原数组的视图
b2[0] = 200
print(b)
print(b2)
数组的数据类型转换
# 数据类型
import numpy as np
# 通常没有必要明确选择需要的数据类型的位数,声明数组是整数、浮点数即可
a = np.ones((2, 3))
print(a.dtype)
# numpy数组是同质、带数据类型的、固定长度的。数组的长度不可变。
# 数组的数据类型
a = np.array([1, 2, 3], dtype=int)
a1 = np.array(a, dtype=float) # 默认float64
a2 = a.astype(np.float32) # 返回一个数组
print(a.dtype, a1.dtype, a2.dtype)
数组转列表
a = np.full((2, 3), 6)
ls = a.tolist() # 数组转列表
print(ls)