获取 "vstack" 数组与预定义数组的第一个元素。相同的数组,不同的结果?



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

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

结果:[11''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

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

感谢您提前给出的答案。

它们不一样。

您的第一个示例产生形状为(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]

最新更新