将列添加到结构化 Numpy 数组

gbo*_*ffi 0 python numpy

我有以下数据geo.dat

\n\n
id  lon  lat inhab  name\n 1   9.  45.   100  Ciri\xc3\xa8\n 2  10.  45.    60  Acquanegra\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到它ndarray

\n\n
import numpy as np\ndata = np.genfromtxt('geo.dat', dtype=None, names=True)\n
Run Code Online (Sandbox Code Playgroud)\n\n

到目前为止,一切顺利,我有一个可以通过列名寻址的数据结构

\n\n
print(data['name'][1]) #>>> Acquanegra\n
Run Code Online (Sandbox Code Playgroud)\n\n

下一步,问题 \xe2\x80\x94 我有一个函数,它接受输入两个地理坐标向量(data['LON']当然data['LAT'])并返回两个数组xy地图上的投影位置(这可以正常工作)。

\n\n

我可以使用单独的向量xy但我想增加data两个新列,data['x']并且data['y']。我天真的尝试

\n\n
data['x'], data['y'] = convert(data['LON'], data['LAT'])\n
Run Code Online (Sandbox Code Playgroud)\n\n

提出了一个ValueError: no field of name x,教我它data具有字典的一些特征,但字典却没有。

\n\n

可以如我所愿吗?蒂亚

\n\n

请考虑,这.hstack()不适用于结构化数组(又名记录数组),之前的大多数答案仅适用于同质数组(Warren 在下面的评论中提到了例外)。

\n\n
\n\n

PS我宁愿不这样做pandas

\n

Eri*_*ric 5

您可以使用np.lib.recfunctions

import numpy.lib.recfunctions as rfn

data = rfn.append_fields(data, ['x', 'y'], [x, y])
Run Code Online (Sandbox Code Playgroud)