将列添加到结构化Numpy数组中

时间:2017-07-04 13:04:10

标签: python numpy

我在geo.dat

中有以下数据
id  lon  lat inhab  name
 1   9.  45.   100  Ciriè
 2  10.  45.    60  Acquanegra

我在ndarray

中得到它
import numpy as np
data = np.genfromtxt('geo.dat', dtype=None, names=True)

到目前为止,这么好,我有一个数据结构,我可以通过列名

来解决
print(data['name'][1]) #>>> Acquanegra

下一步,问题 - 我有一个函数,它接受输入两个向量 地理坐标(当然是data['LON']data['LAT'])并在地图上返回两个投影位置的数组xy(这样就行了)。

我可以使用不同的向量xy,但我想用datadata['x']这两个新列来增加data['y']。我天真的尝试

data['x'], data['y'] = convert(data['LON'], data['LAT'])

提出了一个ValueError: no field of name x,告诉我data有一些字典的特征,但字典不是。

有可能按我的意愿去做吗? TIA

请注意.hstack()不适用于结构化数组(即记录数组),大多数先前的答案仅适用于同类数组(Warren在下面的评论中提到了例外情况)。

PS我不想pandas

1 个答案:

答案 0 :(得分:3)

您可以使用np.lib.recfunctions

import numpy.lib.recfunctions as rfn

data = rfn.append_fields(data, ['x', 'y'], [x, y])