Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以零开始的numpy形状意味着什么_Python_Arrays_Numpy - Fatal编程技术网

Python 以零开始的numpy形状意味着什么

Python 以零开始的numpy形状意味着什么,python,arrays,numpy,Python,Arrays,Numpy,好的,我发现可以有形状为0的数组。 对于将0作为唯一维度的情况,这对我来说是有意义的。它是一个空数组 np.zeros(0) 但如果你有这样的情况: np.zeros((0, 100)) 这让我很困惑。为什么它是这样定义的?据我所知,它只是表示空数组的一种冗余方式。对于python来说,如果有一行行“空”,这似乎并不重要 假设我们有一个给定数组a: import numpy as np a = np.zeros((0,100)) 如果我们打印一个数组,我们得到的只是空数组本身: prin

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

np.zeros(0)
但如果你有这样的情况:

np.zeros((0, 100))

这让我很困惑。为什么它是这样定义的?

据我所知,它只是表示空数组的一种冗余方式。对于python来说,如果有一行行“空”,这似乎并不重要

假设我们有一个给定数组a:

import numpy as np

a = np.zeros((0,100))
如果我们打印一个数组,我们得到的只是空数组本身:

print(a)

>>> []
此外,我们实际上可以看到,尽管如此,a仍保持其形状”

但如果您尝试按位置访问给定元素,例如:

print(a[0])

你会得到一个索引器:

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)

您还将得到相同的数组,即
[0,0,0,0,0,0,0,0]
。只有当您引用的数字实际改变了数组的形状时,形状才起作用。例如:

print(np.zeros((2,3)))
>>>[[0,0,0]
   [0,0,0]]
但是:


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

这只是说第一维度有零个元素…第二维度有100个元素…但因为第一维有零个元素,所以没有第二维度。没有上下文,就不可能知道。例如,它可能是一个句子向量,每个单词有100个特征;但句子是空的(不包含单词)。可以是温度测量,每天在100个位置进行测量,但你刚刚开始,这是你的第一天,你还没有测量任何东西。你还没有提供任何代码让我们看到那一行之外的东西,所以…这是任何人的猜测,真的。@Amadan所以这只是空白数组的附加信息?这意味着你u有“0行100列”,元素总数为0*100=0。这本身不是很有用,但允许这些形状可以更容易地为角情况编写一致的代码。例如,如果您有一个数组
a
,其形状
(10100)
,并且do
np.sum(a[:idx],axis=0)
,即使
idx
为0,结果也将是正确的(在这种情况下,它将导致100个零向量)
numpy
数组不仅由它们的数据元素定义,还由它们的
shape
shape
表示为一个
元组
——最多32个非负数。我们很少需要创建一个0维数组,但我们需要熟悉这个概念。
numpy
没有明确的定义
数组的概念或定义。这是我们从外部引入的东西。这两个语句不一样。是的,它们都生成一个包含0个元素的数组,但它们的形状不同。在第二组中,它们都有10个元素,但形状也不同。形状确实很重要,例如在数组如何与其他元素交互方面因此,为什么我在“这个特殊情况”中使用限定符,混淆是这样的:“对于将0作为唯一维度的情况,这对我来说是有意义的。它是一个空数组。“我只是简单地指出,关于这个问题,这两种说法的意思是相同的。它们都是空数组。形状不同,但如果要为数组编制索引,则任何空数组都是相同的。关于第二条语句是否实际上是一个空数组,人们感到困惑。我只是解释说,它和第一个一样,是。
np.zeros(10)
np.zeros((1,10))
print(np.zeros((2,3)))
>>>[[0,0,0]
   [0,0,0]]
print(np.zeros((3,2)))
>>>[[0,0]
    [0,0]
    [0,0]]