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 的数据类型 拷贝→