我正在实现一个将数据从文件读入多维numpy
数组的函数。数据是按维度长度有规律地结构化的,但是,有些维度可能会丢失,在这种情况下,我将让该维度的长度为0
。所以我偶然发现了这种行为:
In [1]: np.random.random((3,3))
Out[1]:
array([[ 0.59756568, 0.47198749, 0.23442854],
[ 0.29374254, 0.58289927, 0.40497268],
[ 0.00481053, 0.63471263, 0.90053086]])
In [2]: np.random.random((0,3,3))
Out[2]: array([], shape=(0, 3, 3), dtype=float64)
好的,我得到一个空数组。如果我把它看作是第二和第三维是第一维的子集,也就是零,那么整个数组就是零。但是,我希望np.random.random((3,3,0))
等同于np.random.random((3,3))
。但是
又是一个空数组。在
这是预期的行为吗?我理解np.array((3,3))
和np.array((3,3,1))
或np.array((1,3,3))
之间的区别,但我想找一个解释,为什么长度为0
的维会退化整个数组,而不仅仅是那个维。只是我,还是Python/numpy的wtf之一?在
正如我在评论中所说的,你得到的是一个空数组,因为如果任何维度都为零,那么数组的大小总是为零。我想问你能做什么?如果你想要一个空的三维空间,你可以尝试如下方法:
相关问题 更多 >
编程相关推荐