Numpy学习三:数组运算
1、转置
#reshape(shape)函数改变数组形状,shape是一个元组,表示数组的形状
创建一个包含15个元素的一维数组,通过reshape函数调整数组形状为3行5列的二维数组
arr = np.arange(15).reshape((3,5))
print(arr)
结果:[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
#转置,数组转置可以使用transpose方法或者T属性,转置返回的是源数组的视图,不会进行任何复制操作
#将3行5列的二维数组arr转置为5行3列的二维数组
arr.transpose()
结果:array([[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]])
#使用T属性实现转置
arr.T
结果:array([[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]])
2、算数运算
#注意:两个数组做算数法要求两个数组的结构要相同
#数组加法,两个数组对应位置的元素相加
arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.ones((2,3)) #2行3列的全1数组
arr1 + arr2 #相当于给数组arr1中的每个元素加1
结果:array([[ 2., 3., 4.],
[ 5., 6., 7.]])
#数组减法,两个数组对应位置的元素相减
arr1 - arr2
结果:array([[ 0., 1., 2.],
[ 3., 4., 5.]])
#数组乘法,两个数组对应位置的元素相乘
arr3 = np.array([[2,2,2],[2,2,2]])
arr1 * arr3
结果:array([[ 2, 4, 6],
[ 8, 10, 12]])
#使用tile函数构造数组,上一个arr3构造具有相同元素的数组非常麻烦,使用tile函数非常简洁
#第一个参数表示需要复制的数组,第二个参数是对应的轴方向上复制的次数
#第2个参数(2,3)表示在第0轴方向复制2次,第1轴方向复制3次,这样就构成了一个2行3列的二维数组
arr4 = np.tile([2],(2,3))
print(arr4)
结果:[[2 2 2]
[2 2 2]]
#数组除法,两个数组对应位置的元素相除
arr1 / arr4
结果:array([[ 0.5, 1. , 1.5],
[ 2. , 2.5, 3. ]])
3、数组与标量算术运算
#对数组中每个元素求平方
arr1 ** 2
结果:array([[ 1, 4, 9],
[16, 25, 36]], dtype=int32)
#数组arr1中的每个元素加10
arr1 + 10
结果:array([[11, 12, 13],
[14, 15, 16]])