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

Numpy 获取“a”的第一个元素;vstack"-ed数组与预定义数组。相同的数组,不同的结果?,numpy,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''你好''6''7''8''9'] 但如果我这样做: import numpy as np a=np.array([1,2,3,4,"hello",6,7,8,9]) print(a[0]) 结果:1 为什么会有区别?它不是同一个数

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

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''你好''6''7''8''9']

但如果我这样做:

import numpy as np

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

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

提前感谢您的回答。

它们不一样

您的第一个示例生成一个shape
(1,9)
数组,而您的第二个示例生成一个shape
(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]
vstack
应用
np。在将其加入
(0,9)
数组之前,至少应用
2d([您的列表]
)。因此,它将(0,9)与(1,9)数组联接,得到(1,9)
vstack
docs试图明确说明该操作。