Python 创建具有列名和类型的空numpy,并添加第一行
正如标题所说,我想创建一个空的numpy数组,并添加第一行, 当然,以后会有更多,但第一步是第一步 我尝试:Python 创建具有列名和类型的空numpy,并添加第一行,python,arrays,numpy,Python,Arrays,Numpy,正如标题所说,我想创建一个空的numpy数组,并添加第一行, 当然,以后会有更多,但第一步是第一步 我尝试: myNp= np.empty( shape=(0,8), dtype=[('city', np.str_), ('country_code', np.str_), ('latitude', np.single),
myNp= np.empty( shape=(0,8),
dtype=[('city', np.str_),
('country_code', np.str_),
('latitude', np.single),
('longitude', np.single),
('timezone', np.str_),
('is_active' , np.bool_),
('is_underInv' , np.bool_),
('is_promoted' , np.bool_)
])
sampleCity=['myCity','ZA',51.51,-0.123,'Central TimeZone',True,True,True]
print(myNp)
print(sampleCity)
myNp= np.vstack((myNp, sampleCity))
print(myNp)
但我得到的只是无效的类型提升你很接近了。当您混合使用数据类型string、Float和bools时,会得到一个结构化数组或记录数组。 您的数据类型是正确的,但是形状应该是这样的元组:shape=nrows,。 此外,在创建空数组时,还需要分配字符串大小。 请参阅下面修改的代码。它显示了如何将数据添加到一行。您还可以按列添加数据,引用字段名myNp['city']=array\u of_city\u names
samplecity必须是具有匹配数据类型的数组。但从更大的角度来看,不要通过vstack重复构建任何形状或数据类型的数组。从元组列表中构建结构化数组,或者按照答案中的操作使用元素赋值。如果必须连接,请确保所有数组都具有匹配的数据类型。不要以为np.vstack会为您这样做。请注意答案中的数据类型更正。我认为错误在他试图纠正的列表中。它的数据类型不匹配。我不使用vstack,因此无法发表评论。将np.str与np.empty一起使用会导致“城市”、“国家代码”和“时区”的字符串长度为零。分配它们可能足以解决问题。另外,我刚刚注意到我的代码中有一个剪切粘贴错误,我将修复它。
dt = dtype=[('city', 'S20'),
('country_code', 'S20'),
('latitude', np.single),
('longitude', np.single),
('timezone', 'S20'),
('is_active' , np.bool_),
('is_underInv' , np.bool_),
('is_promoted' , np.bool_)
]
myNp = np.empty( shape=(8,), dtype=dt)
sampleCity = np.array([('myCity','ZA',51.51,-0.123,
'Central TimeZone',True,True,True)],
dtype=dt)
print(sampleCity)
myNp[0] = sampleCity
print(myNp[0])