2 回答
TA贡献1865条经验 获得超7个赞
据我所知,这只是表达空数组的一种冗余方式。如果你有一排“空”,这对 python 来说似乎无关紧要。
假设我们有一个给定数组 a:
import numpy as np
a = np.zeros((0,100))
如果我们打印 a 我们得到的只是空数组本身:
print(a)
>>> []
此外,我们实际上可以看到,尽管如此,它仍保持其形状”
np.shape(a)
>>> (0, 100)
但是,如果您尝试按位置访问给定元素,例如:
print(a[0])
或者
print(a[0][0])
你得到一个 IndexError :
IndexError: index 0 is out of bounds for axis 0 with size 0
因此,我相信空数组的数学含义,尽管您分配给它们的形状是相同的。
TA贡献1863条经验 获得超2个赞
好吧,在这种特殊情况下,这两个陈述是等价的:
print(np.zeros(0))
>>>[]
print(np.zeros((0,100)))
>>>[]
这是因为空数组是空数组。你的直觉在那里是正确的。如果你输入:
np.zeros(10)
或者
np.zeros((1,10))
你也会得到相同的数组,即[0,0,0,0,0,0,0,0,0,0]. 仅当您指的是实际更改数组形状的数字时,形状才重要。例如:
print(np.zeros((2,3)))
>>>[[0,0,0]
[0,0,0]]
但:
print(np.zeros((3,2)))
>>>[[0,0]
[0,0]
[0,0]]
没有什么特别不透明的。你的常识在这里实际上适用。如果数组为空,则添加到其中的其他维度都不重要。
添加回答
举报