以零开头的 numpy 形状是什么意思

好的,所以我发现您可以拥有形状为 0 的数组。
对于您将 0 作为唯一维度的情况,这对我来说很有意义。它是一个空数组。

np.zeros(0)

但是如果你有这样的事情:

np.zeros((0, 100))

对我来说很困惑。为什么是这样定义的?


斯蒂芬大帝
浏览 245回答 2
2回答

莫回无

据我所知,这只是表达空数组的一种冗余方式。如果你有一排“空”,这对 python 来说似乎无关紧要。假设我们有一个给定数组 a:import numpy as npa = 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因此,我相信空数组的数学含义,尽管您分配给它们的形状是相同的。

小唯快跑啊

好吧,在这种特殊情况下,这两个陈述是等价的: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]]没有什么特别不透明的。你的常识在这里实际上适用。如果数组为空,则添加到其中的其他维度都不重要。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python