获取“ vstack” -ed数组与预定义数组的第一个元素。相同的数组,结果不同吗?

时间:2018-11-28 15:33:05

标签: numpy

我相信这些应该有相同的结果,但事实并非如此。

import numpy as np

a=np.empty((0,9))
a=np.vstack((a,[1,2,3,4,"hello",6,7,8,9]))
print(a[0])

结果:['1''2''3''4''hello''6''7''8''9']

但是如果我这样做:

import numpy as np

a=np.array([1,2,3,4,"hello",6,7,8,9])
print(a[0])

结果:1​​

为什么有区别?不是同一数组吗?

谢谢您的回答。

1 个答案:

答案 0 :(得分:1)

他们不一样。

您的第一个示例生成形状为(1, 9)的数组,而您的第二个示例生成形状为(9,)的数组,可以如下确认:

import numpy as np

a = np.empty((0,9))
a = np.vstack((a,[1,2,3,4,"hello",6,7,8,9]))
print(a.shape) # result is: (1, 9)

a = np.array([1,2,3,4,"hello",6,7,8,9])
print(a.shape) # result is: (9,)

可以将形状为(1, 9)的数组视为包含数组(每个数组的长度为9)的数组(长度为1)。因此,在您的示例中,a[0]为您提供了这些长度为9的数组中的第一个,即[1,2,3,4,"hello",6,7,8,9]