数组元素的切片
一维数组
#一维数组
#切片方法和Python序列数据结构的切片一样
a=np.array([0,1,2,3,4],dtype=np.int64)#占用新的内存
#不包括结束位置
print(a[0:3])
print(a[:3])
print(a[0:])
二维数组
#二维数组
a=np.array([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]],dtype=np.int64)
print(a[0:2])
print(a[:2])
print(a[0:])
print(a[0:2,0:2])
print(a[:,0])
三维数组
a=np.array([[[0,31,2,23,4],[5,56,76,8,79],[10,11,12,13,14]],[[15,16,17,18,19],[10,11,12,13,14],[15,16,17,18,19]],[[0,1,2,3,4],[5,86,87,88,9],[10,11,12,13,14]],[[90,1,92,3,94],[5,6,7,8,9],[10,11,12,13,14]]],dtype=np.int64)
print("原始数据:\n",a)
print(" ")
print(a[0:2])
print(" ")
print(a[:2])
print(" ")
print(a[0:])
print(" ")
print(a[0:2,0:2])
print(" ")
print(a[:,0])
print(" ")
print(a[:,:,0])
原始数据:[[[ 0 31 2 23 4][ 5 56 76 8 79][10 11 12 13 14]][[15 16 17 18 19][10 11 12 13 14][15 16 17 18 19]][[ 0 1 2 3 4][ 5 86 87 88 9][10 11 12 13 14]][[90 1 92 3 94][ 5 6 7 8 9][10 11 12 13 14]]][[[ 0 31 2 23 4][ 5 56 76 8 79][10 11 12 13 14]][[15 16 17 18 19][10 11 12 13 14][15 16 17 18 19]]][[[ 0 31 2 23 4][ 5 56 76 8 79][10 11 12 13 14]][[15 16 17 18 19][10 11 12 13 14][15 16 17 18 19]]][[[ 0 31 2 23 4][ 5 56 76 8 79][10 11 12 13 14]][[15 16 17 18 19][10 11 12 13 14][15 16 17 18 19]][[ 0 1 2 3 4][ 5 86 87 88 9][10 11 12 13 14]][[90 1 92 3 94][ 5 6 7 8 9][10 11 12 13 14]]][[[ 0 31 2 23 4][ 5 56 76 8 79]][[15 16 17 18 19][10 11 12 13 14]]][[ 0 31 2 23 4][15 16 17 18 19][ 0 1 2 3 4][90 1 92 3 94]][[ 0 5 10][15 10 15][ 0 5 10][90 5 10]]
改变数组的形状
#当改变形状时,应该考虑到数组中元素的个数,确保改变前后,元素总个数相等。
b=np.arange(12)
print(b)
c=b.reshape((-1,1))#不改变当前数组,按照shape创建新的数组 -1自动计算出这个维度的取值
print(b)
print(c)
d=b.reshape((3,4))
print(d)
b.resize((3,4))#改变当前数组,按照shape创建数组
print(b)
e=np.arange(16).reshape(4,4)
print(e)
f=np.arange(16).reshape(2,4,2)
print(f)
数组间的运算
a = np.array([0,1,2,3,4])
b = np.array([5,6,7,8,9])
c = np.array([[5,6,7,8,9],[0,1,2,3,4]])
# #数组加法,数组间对应元素相加,元素形状长度相同
print(a+b)
#1维和2维可以相加(1维与二维每行相加)
print(a+c)
# #幂运算:对每个数组中的元素求n次方
print(a**2)
# #矩阵运算:矩阵对应元素相乘
print(a*b)
print(a*c)
函数
import numpy as np
a = np.array([0,-1,2,3,4])
a1 = np.array([0,1,2,3,4])
b = np.array([5,6,7,-8,9])
c = np.array([[5,-6,7,8,9],[0,-1,2,3,-4]])
print(np.sum(c)) #计算所有元素的和
print(np.prod(b)) #计算所有元素的乘积
print(np.diff(a)) #计算数组的相邻元素之间的差
print(np.sqrt(a1)) #计算各元素的平方根
print(np.exp(a)) #计算各元素的指数值
print(np.abs(a)) #取各元素的绝对值
按行求和&按列求和
轴(axes):数组中的每一个维度被称为一个轴
秩(rank):轴的个数
二维
b=np.arange(12).reshape(3,4)
print(b)
print("列\n",np.sum(b,axis=0))
print("行\n",np.sum(b,axis=1))
可以理解为
axis=0时结果是4个数
axis=1时结果是3个数
三维
b=np.arange(24).reshape(2,3,4)
print(b)
print(" axis=0\n",np.sum(b,axis=0))
print(" axis=1\n",np.sum(b,axis=1))
print(" axis=2\n",np.sum(b,axis=2))
可以理解为
axis=0时结果是[3,4]的数组(3行4列)
axis=1时结果是[2,4]的数组(2行4列)
axis=2时结果是[2,3]的数组(2行3列)
数组堆叠运算
一维
a = np.array([0,1,2,3,4])
b = np.array([5,6,7,8,9])
#数组堆叠
# np.stack( (数组1, 数组2,...) , axis)
print(np.stack((a,b),axis=0))
print(np.stack((a,b),axis=1))
二维
c = np.array([[5,6,7,8,9],[0,1,92,3,4]])
d = np.array([[5,6,7,8,9],[0,1,2,3,10]])
print(np.stack((c,d),axis=0))
print(np.stack((c,d),axis=1))
print(np.stack((c,d),axis=2))
矩阵运算
矩阵乘法
矩阵相乘:按照矩阵相乘的规则运算
a = np.array([[1,1],[0,1]])
b = np.array([[2,0],[3,4]])
c = np.array([[5,6,7,8,9],[0,1,2,3,4]])
#矩阵相乘,按照矩阵相乘的规则运算
print("矩阵相乘\n",np.matmul(a,b))
print("矩阵相乘\n",np.dot(a,b))
#矩阵转置
print("矩阵转置\n",np.transpose(a))
#矩阵求逆
print("矩阵求逆\n",np.linalg.inv(a))