NumPy 数组计算
import numpy as np
arr = np.array([[1,2,3], [4,5,6]])
arr
1
2
3
4
2
3
4
array([[1, 2, 3],
[4, 5, 6]])
# 数组与标量的算术运算
arr * 2
1
array([[ 2, 4, 6],
[ 8, 10, 12]])
arr + 2
1
array([[3, 4, 5],
[6, 7, 8]])
# 数组与数组之间的运算
arr + arr
1
array([[ 2, 4, 6],
[ 8, 10, 12]])
arr * arr # 矩阵乘法在线性代数里面会讲
1
array([[ 1, 4, 9],
[16, 25, 36]])
arr - arr
1
array([[0, 0, 0],
[0, 0, 0]])
arr / arr
1
array([[1., 1., 1.],
[1., 1., 1.]])
arr
1
array([[1, 2, 3],
[4, 5, 6]])
# *=、+=运算会修改原对象,而不是创建新对象
arr *= 2
arr
1
2
3
2
3
array([[ 2, 4, 6],
[ 8, 10, 12]])
# shape相同的数组之间比较会生成布尔数组
arr2 = arr + 1
arr2 > arr
1
2
3
2
3
array([[ True, True, True],
[ True, True, True]])
# 不同类型的数组计算之后的结果的类型会向上转换为更精确的类型(如int类型的数组a和float类型的数组b求和得到c的类型为float,而不是int)
int_arr = np.array([1, 2, 3])
float_arr = np.array([0.1, 0.2, 0.3])
res_arr = int_arr + float_arr
res_arr.dtype
1
2
3
4
5
6
2
3
4
5
6
dtype('float64')
# 形状不同的数组之间能否进行计算?
arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3, 4])
arr1 + arr2
1
2
3
4
5
2
3
4
5
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-12-1195aae3f7bd> in <module>()
3 arr2 = np.array([1, 2, 3, 4])
4
----> 5 arr1 + arr2
ValueError: operands could not be broadcast together with shapes (3,) (4,)
arr3 = np.array([[1, 2, 3],
[1, 2, 3]])
arr1 + arr3
1
2
3
4
2
3
4
array([[2, 4, 6],
[2, 4, 6]])
上次更新: 2023/11/01, 03:11:44
← NumPy 的数据类型 拷贝→