我有一些问题,理解python/numpy如何在比较空列表时进行数组形状的转换 - 就我所知,这是一个与False的隐式(元素明智)比较。numpy与空列表比较阵列的形状
在下面的示例形状由一个在最后一个维度减小,如果它不大于1
z = N.zeros((2,2,1))
z == []
>> array([], shape=(2, 2, 0), dtype=bool)
z2 = N.zeros((2,2,2))
z2 ==[]
>> False
但是,如果我用假直接比较,我得到预期的输出。
z = N.zeros((2,2,1))
(z == False).shape
>> (2, 2, 2)
z2 = N.zeros((2,2,2))
(z2 == False).shape
>> (2, 2, 1)
我总是将广播理解为将输出数组扩展为两个输入数组的最大形状(如果适用)。在这种情况下,这是不正确的。谢谢澄清! – dbacc
只有尺寸'1'尺寸被改变以匹配其他尺寸。尺寸'2'永远不会扩大到匹配尺寸'4'。我会将广播序列描述为(2,2,1),(0,)=>(2,2,1),(1,1,0)=>(2,2,0)'。所有'1'都被改变了。 – hpaulj