我正在实现一个将文件中的数据读取到多维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)
好的,所以我得到一个空数组。如果我将其视为第 2 维和第 3 维是第 1 维的子集,即为 nil,则这是有道理的,因此整个数组为 nil。但是,我希望np.random.random((3,3,0))
相当于np.random.random((3,3))
. 然而,
In [3]: np.random.random((3,3,0))
Out[3]: array([], shape=(3, 3, 0), dtype=float64)
又是一个空数组。
这是预期的行为吗?np.array((3,3))
我理解and np.array((3,3,1))
or之间的区别np.array((1,3,3))
,但我正在寻找一个解释,为什么长度维度会0
退化整个数组而不仅仅是那个维度。只是我,还是这是 Python/numpy WTF 之一?