我正在阅读NumPy的源代码。以下是从np.indices中提取的。
as21 = np.array([[0], [1]])
n23 = np.empty((2, 2, 3), dtype=object)
n23[0] = as21
print(n23)
给予
[[[0 0 0]
[1 1 1]]
[[None None None]
[None None None]]]
我所知道的是: broadcasting的概念 the demos of broadcasting(添加,时间和其他一些类似的运算符)
我需要知道或确认的是 此功能是广播的另一种应用吗? 如果是,是否有一个numpy文档链接来描述? 或描述所有可以应用广播的运营商的链接。
答案 0 :(得分:0)
因此n23
被创建为(2,2,3)形状的对象dtype数组。使用此dtype
,所有初始值均为None
。
as21
的形状为(2,1)。
n23[0]
,又名n23[0,:,:]
是(2,3)形阵列。
是的,将(2,1)分配给(2,3)涉及广播。也就是说,as21
的1号尺寸被复制以匹配n23[0]
的3号。
(2,1) => (2,3)
广播有两个基本步骤:
- matching number of dimensions, by adding size 1 dimenions at the front (if needed)
- adjusting size 1 dimensions to match others.
通过这些规则n23[:] = as21
也将起作用。
(2,1)=>(1,2,1)=>(2,2,3)
答案 1 :(得分:0)
“每个分配的值的长度都应等于数组中字段数的元组,而不是列表或数组,因为它们将触发numpy的广播规则。”