Numpy入门操作
NumPy(Numerical Python)是常用的python模块,可用来存储和处理大型矩阵
一、numpy库的导入和常用操作
import numpy as np '''np.zeros(shape,dtype=float,order='C'):创建一个形状为shape的全零数组, dtype:数组类型。order=C代表与c语言类似,行优先;F代表列优先''' print(np.zeros([2,2]))#生成全零数组 print(np.ones([2,2]))#生成全1数组 print(np.eye(2))#创建对角矩阵
print(np.empty([3,3]))#np.empty(shape,dtype=float,order='C'):生成一个未初始化的数组 print(np.full([3,3],6))#生成一个fill_value填充的数组 print(np.linspace(0,100,10))#生成一个等间隔的数组
输出:
[[0.00000000e+000 0.00000000e+000 0.00000000e+000]
[0.00000000e+000 0.00000000e+000 5.84973725e-321]
[1.11261638e-306 2.22522596e-306 3.91786943e-317]]
[[6 6 6]
[6 6 6]
[6 6 6]]
[ 0. 11.11111111 22.22222222 33.33333333 44.44444444
55.55555556 66.66666667 77.77777778 88.88888889 100. ]
a=np.array([1,2,3])
print(a.shape)
print(a.size)#数组元素数量
a[0]=5
print(a[0],a[1],a[2])
b=np.array([[1,2,3],[4,5,6]])
print(b[0,0],b[0,1],b[1,0])
print(b.shape)
输出: (3,)
3
5 2 3
1 2 4
(2, 3)
arr1 = np.array([1,2,3],dtype=float64) arr2 = np.array([1,2,3],dtype=np.int32) print(arr1.dtype) print(arr1) print(arr2.dtype)
输出:
float64
[1. 2. 3.]
int32
三、索引和切片
arr = np.arange(10) arr_slice = arr[5:8] arr_slice[1]=999 print(arr) arr_slice[:]=14 print(arr)
输出:[ 0 1 2 3 4 5 999 7 8 9] [ 0 1 2 3 4 14 14 14 8 9]
names = np.array(['Bob','Will','Bob','Joe']) data = np.array([[-3,2,0,-1],[1,2,3,-4],[2.5,1.7,-0.2,1],[-8,-4,9,10]]) print(data[names=='Bob']) print(data[names=='Bob',2:])
输出:[[-3. 2. 0. -1. ] [ 2.5 1.7 -0.2 1. ]]
[[ 0. -1. ] [-0.2 1. ]]
四、基本统计方法
arr3 = np.arange(20).reshape((4,5))#方法改变数组形状
print('arr3:',arr3)
print('arr3的均值',arr3.mean()) #方法求均值
print('和',arr3.sum()) #求和
print('arr3每行的均值',arr3.mean(1))#对每行求平均值,1行,0列
print('每列的和',arr3.sum(0)) #对每列求和
输出:
arr3: [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
arr3的均值 9.5
和 190
arr3每列的均值 [ 2. 7. 12. 17.]
每列的和 [30 34 38 42 46]
#了解数组转置
samples =np.random.normal(size=(2,2))
#np.random.normal(loc=0.0, scale=1.0, size=None):从正态分布中随机抽取样本生成一个
#数组。loc为分布的平均值,scale为标准差,size为数组形状
print(samples)
print('转置后:',samples.T)