numpy库的使用
创建数组
x1 = np.array([1, 2, 3], dtype="int8")
print(x1)
print(x1.dtype) # 数据类型
x2 = np.array(range(1, 10), dtype="int8")
print(x2)
print(x2.dtype)
x3 = np.arange(1, 10, 2, dtype="int8")
print(x3)
print(x3.dtype)
数据类型
x3 = np.arange(1, 10, 2, dtype="int8")
print(x3)
print(x3.dtype)
# 改变数据类型
x4 = x3.astype("float32")
print(x4)
print(x4.dtype)
x5 = np.array([1, 0, 1, 1, 0], dtype="bool")
print(x5)
print(x5.dtype)
# 随机生成数据
x6 = np.random.random(10)
print(x6)
# 四舍五入
x7 = np.round(x6, 2)
print(x7)
数据形状
x8 = np.arange(16)
print(x8)
print(x8.shape)
# 改变数组的形状
x9 = x8.reshape(4, -1)
print(x9)
print(x9.shape)
# 拉平
x10 = x9.flatten()
print(x10)
数组计算
x11 = np.arange(12).reshape(3, 4)
print(x11)
# 数组与数字的加减乘除
x12 = x11 + 3
print(x12)
x13 = np.arange(13, 25).reshape(3, 4)
print(x13)
# 数组与形状相同的数组计算
x14 = x11 + x13
print(x14)
# 数组与形状不同的数组计算(不是所有的情况都适用),遵循广播原则
x15 = np.arange(4).reshape(1, 4)
x16 = x11 - x15
print(x16)
x17 = np.arange(3).reshape(3, 1)
x18 = x11 - x17
print(x18)
print(x11)
# sum(),mean(),max(),min()
# 数组所有元素求和
print(x11.sum())
# 对列进行求和
print(x11.sum(axis=0))
# 对行进行求和
print(x11.sum(axis=1))
读取文件
txt = np.loadtxt('numpy_read_file.csv', delimiter=',', skiprows=1, usecols=[0, 1, 2], encoding='utf-8', dtype='int64')
print(txt)
切片和索引
# 取某行
print(txt[0])
# 取连续行
print(txt[0:2])
# 取不连续的行
print(txt[[0, 1, 3]])
# 取某列
print(txt[:, 0])
# 取连续列
print(txt[:, 0:2])
# 取不连续的列
print(txt[:, [[0, 2]]])
# 取某行某列
print(txt[1, 1])
# 取连续的多行多列
print(txt[0:2, 0:2])
# 取不连续的多行多列
print(txt[[0, 2],[0, 2]])
三元运算符
print(x11)
# 如果数组的元素小于5,则取0;否则,取5
print(np.where(x11<5, 0, 5))
# clip()裁剪,小于4的替换为4,大于7的替换为7
print(x11.clip(4, 7))
数组拼接
print(x11)
x19 = np.arange(13, 25).reshape(3, 4)
print(x19)
# 数组拼接
x20 = np.vstack((x11, x19)) # 垂直拼接
print(x20)
print(x20.shape)
x21 = np.hstack((x11, x19)) # 水平拼接
print(x21)
print(x21.shape)
数组行和列的交换
x22 = np.arange(12).reshape(3, 4)
print(x22)
# 行交换
x22[[1, 2], :] = x22[[2, 1], :]
print(x22)
# 列交换
x22[:, [1, 2]] = x22[:, [2, 1]]
print(x22)
np.random
# 均匀分布
print(np.random.rand(2, 5))
# 正态分布
print(np.random.randn(2, 5))
# 产生某个范围内的随机整数
print(np.random.randint(0, 10, (2, 4)))
numpy的其它方法
# 返回数组中最大元素的下标
print(np.argmax(x22))
print(np.argmax(x22, axis=0))
# 返回数组中最小元素的下标
print(np.argmin(x22))
print(np.argmin(x22, axis=1))
# 创建全为0的数组
print(np.zeros((2, 3)))
# 创建全为1的数组
print(np.ones((2, 3)))
# 创建对角线为1的方阵
print(np.eye(4))