数组的运算
数组+标量(实数)
- 数组中的每个位置都加上这个标量
arr2 = np.array([[3,4,5],[6,7,8]])
print(arr2 + 2)
输出:
[[ 5 6 7]
[ 8 9 10]]
数组+数组
- 对应位置的值,做对应的运算
- 加法:对应位置相加
- 减法:对应位置相减
- 乘法:对应位置相乘
- 除法:对应位置相除
代码:(以加法为例)
arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.array([[3,4,5],[6,7,8]])
print(arr1+arr2)
输出:
[[ 4 6 8]
[10 12 14]]
数组转化矩阵,对矩阵做乘法 - mat
注意:
- 数组的乘法需要同行同列,但是矩阵需要前面一个的列等于后面一个的行才可以使用乘法
arr1 = np.array([[1,2],[4,5]])
arr2 = np.array([[3,4],[6,7]])
arr3 = np.mat(arr1)
arr4 = np.mat(arr2)
print(arr1*arr2)
print(arr3*arr4)
输出:
[[ 3 8]
[24 35]]
[[15 18]
[42 51]]
数组维度展开 - 广播性
- 扩展可以理解为复制
np.array([1,2])
==np.array([[1,2],[1,2]])
arr1 = np.array([1,2])
arr2 = np.array([[3,4],[6,7]])
print(arr1+arr2)
输出:
[[4 6]
[7 9]]
数组的索引
- 从0开始索引
axis = 0
- - 行axis = 1
- -列axis = 2
- -个数(三维的)
一维数组的索引
- 规律:包前不包后
arr[:3]
==arr[0:3]
arr[4:]
==arr[4:10]
arr1 = np.arange(10)
print(arr1[5]) # 下标为5(第六位)
print(arr1[:3]) # 下标为0-2,输出
print(arr1[3:6]) #下标为3-5,输出
输出:
5
[0 1 2]
[3 4 5]
二维数组索引
用逗号,
分隔行维度和列维度
arr = np.array([[1,2,3],[2,3,4],[3,4,7]])
print(arr[1]) # 第二行
print(arr[2,1]) #第三行第二列
print(arr[:,1]) #全部行第二列
输出:
[2 3 4]
4
[2 3 4]
布尔索引
arr[arr<5]=0
# 当在arr中,有值比5小,就把它复制给0
arr = np.array([[1,2,3],[2,3,4],[3,4,7]])
arr[arr<5]=0 # 当在arr中,有值比5小,就把它复制给0
print(arr)
输出:
[[0 0 0]
[0 0 0]
[0 0 7]]
三元运算符
np.where(arr>5,10,3)
如果arr里面的值大于5,就改成10,小于5,就改成3
arr = np.array([[1,2,3],[2,3,4],[3,4,7]])
print(np.where(arr>5,10,3))