为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

斯蒂芬大帝 2021-09-14 21:30:44
好的,所以我发现您可以拥有形状为 0 的数组。对于您将 0 作为唯一维度的情况,这对我来说很有意义。它是一个空数组。np.zeros(0)但是如果你有这样的事情:np.zeros((0, 100))对我来说很困惑。为什么是这样定义的?
查看完整描述

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

因此,我相信空数组的数学含义,尽管您分配给它们的形状是相同的。


查看完整回答
反对 回复 2021-09-14
?
小唯快跑啊

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]]

没有什么特别不透明的。你的常识在这里实际上适用。如果数组为空,则添加到其中的其他维度都不重要。


查看完整回答
反对 回复 2021-09-14
  • 2 回答
  • 0 关注
  • 233 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信