📅  最后修改于: 2023-12-03 15:19:14.600000             🧑  作者: Mango
在NumPy中,有时需要对两个数组进行操作,但这两个数组的形状(shape)并不相同。在这种情况下,我们可以使用广播(broadcasting)机制。Numpy中的broadcast_arrays()
方法允许您将不同形状的数组广播到相同的形状,以进行各种操作。
numpy.broadcast_arrays(arr1, arr2, subok=False)
参数说明:
**返回值:**广播后的数组(broadcasted arrays)。
import numpy as np
# 创建一个2x2的数组
arr1 = np.array([[1,2], [3,4]])
# 创建一个2x2x2的数组
arr2 = np.array([[[1,2], [3,4]], [[5,6], [7,8]]])
# 通过调用broadcast_arrays()函数来广播这两个数组
bcast_array = np.broadcast_arrays(arr1, arr2)
# 打印广播后的数组
print(bcast_array)
输出结果为:
[array([[[1, 2],
[3, 4]],
[[1, 2],
[3, 4]]]),
array([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])]
上面的例子展示了如何使用broadcast_arrays()方法将两个不同形状的数组广播到相同的形状,以进行操作。
另一个示例:
import numpy as np
# 创建一个1x4的数组
arr1 = np.array([1,2,3,4])
# 创建一个1x1x4的数组
arr2 = np.array([[[5,6,7,8]]])
# 通过调用broadcast_arrays()函数来广播这两个数组
bcast_array = np.broadcast_arrays(arr1, arr2)
# 打印广播后的数组
print(bcast_array)
输出结果为:
[array([[[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4]]]),
array([[[5, 6, 7, 8],
[5, 6, 7, 8],
[5, 6, 7, 8],
[5, 6, 7, 8]]])]
这个例子展示了如何使用broadcast_arrays()方法将一个形状为(4,)的数组广播到一个形状为(1,1,4)的数组,以进行操作。
以上例子只是Numpy广播机制的一小部分。在NumPy中,广播机制的使用相当广泛,可以使代码更简洁,性能更佳。
注:若要更好的阅读体验,推荐在jupyter notebook中运行以上代码片段。