一、定义
numpy是数据分析的第三方库,多用于数组分析。
二、数组
import numpy as np
from numpy import dtype
# 生成一维数组
np.array([1,2,3])
# 生成二维数组
A = np.array([[1,2,3],[4,5,6]])
# 查看数组形状
A.shape
# 查看数组维度
A.ndim
# 生成全零数组
np.zeros((3,4))
# 生成全1数组
np.ones((3,4))
# 生成单位矩阵
np.eye(4)
# 指定数据类型
A1 = np.array([[1, 2, 3],[4, 5, 6]], dtype = np.float64)
A2 = np.array([[7, 8, 9],[10, 11, 12]], dtype = np.float32)
A3 = np.array([[13, 14, 15],[16, 17, 18]], dtype = np.int32)
print(A1.dtype)
print(A2.dtype)
print(A3.dtype)
# 改变数据类型
B1 = A1.astype(np.int32)
print(A1.dtype)
print("改变之后的数据类型",B1.dtype)
三、索引
索引是数组中数据的编号方式,通过索引可以访问、获取或修改数组中的对应元素。从0开始
# 获取元素
A = np.arange(9).reshape((3,3))
print(A)
print("索引获取元素:",A[1,2])
# 重新赋值
A[1,2] = 10
print("重新赋值后的数组")
print(A)
# 获取行元素
A[1,:]
# 获取列元素
A[:,2]
# 获取某一部分
A[0:3, 1:3]
# 布尔值索引
print(A%2==1)
A = np.arange(9).reshape((3,3))
# 获取奇数项
print(A[A%2==1])
# np.where
a,b = np.where(A%2==0)
print(a)
print(b)
print(A[a,b])
# 偶数不变,奇数翻倍
print(np.where(A%2==0,A,A*2))
# 转置
A = np.arange(9).reshape((3,3))
print(A)
print(A.T)
# 轴转换
A = np.arange(24).reshape(2, 3, 4)
print(A.shape)
B = A.transpose((2, 1, 0))
print(B.shape)
print(B)
四、运算函数
# 均值
import numpy as np
from numpy import dtype
A = np.arange(15).reshape((3,5))
print(A)
print("数组均值:",A.mean())
print("每列均值:",A.mean(axis=0))
print("每行均值:",A.mean(axis=1))
print()
# 和
print("数组和:",A.sum())
print("每列和:",A.sum(axis=0))
print("每行和:",A.sum(axis=1))
print()
# 累加和
print("数组累加和:",A.cumsum())
print("每列累加和:",A.cumsum(axis=0))
print("每行累加和:",A.cumsum(axis=1))
print()
# 标准差
print("数组标准差:",A.std())
print("每列标准差:",A.std(axis=0))
print("每行标准差:",A.std(axis=1))
print()
# 方差
print("数组方差:",A.var())
print("每列方差:",A.var(axis=0))
print("每行方差:",A.var(axis=1))
print()
# 最大值
print("数组最大值:",A.max())
print("每列最大值:",A.max(axis=0))
print("每行最大值:",A.max(axis=1))
print()
# 最小值
print("数组最小值:",A.min())
print("每列最小值:",A.min(axis=0))
print("每行最小值:",A.min(axis=1))
# 正态分布的随机矩阵
np.random.randn(2,3)
# 随机排序
np.random.seed(10)
np.random.permutation(10)
# 均匀分布的随机数矩阵
np.random.seed(10)
np.random.randn(2,3)
# 固定范围内随机整数
np.random.seed(10)
np.random.randint(10,20,size=(5))