python数组添加列_python – Numpy,将列添加到现有结构化数组

我有一个起始数组:

[(1, [-112.01268501699997, 40.64249414272372])

(2, [-111.86145708699996, 40.4945008710162])]

其中第一列是int,第二列是带有浮点数的元组.我需要添加一个名为USNG的字符串列.

然后我创建一个结构化的numpy数组:

dtype = numpy.dtype([('USNG', '|S100')])

x = numpy.empty(array.shape, dtype=dtype)

我想将x numpy数组附加到现有数组以添加新列,以便我可以为每一行输出一些信息.当我执行以下操作时:

numpy.append(array, x, axis=1)# I've also tried vstack and hstack

我收到以下错误:

'TypeError: invalid type promotion'

有关为什么会发生这种情况的任何建议?

谢谢

解决方法:

您必须创建一个包含新字段的新dtype.

例如,这是一个:

In [86]: a

Out[86]:

array([(1, [-112.01268501699997, 40.64249414272372]),

(2, [-111.86145708699996, 40.4945008710162])],

dtype=[('i', '

a.dtype.descr是[(‘i’,’< i8'),('loc','< f8',(2,))];即字段类型列表.我们将通过在该列表的末尾添加('USNG','S100')来创建新的dtype:

In [87]: new_dt = np.dtype(a.dtype.descr + [('USNG', 'S100')])

现在创建一个新的结构化数组,b.我在这里使用零,所以字符串字段将以值”开头.你也可以使用空.然后字符串将包含垃圾,但如果您立即为它们分配值,则无关紧要.

In [88]: b = np.zeros(a.shape, dtype=new_dt)

将现有数据从a复制到b:

In [89]: b['i'] = a['i']

In [90]: b['loc'] = a['loc']

现在是b:

In [91]: b

Out[91]:

array([(1, [-112.01268501699997, 40.64249414272372], ''),

(2, [-111.86145708699996, 40.4945008710162], '')],

dtype=[('i', '

使用一些数据填写新字段:

In [93]: b['USNG'] = ['FOO', 'BAR']

In [94]: b

Out[94]:

array([(1, [-112.01268501699997, 40.64249414272372], 'FOO'),

(2, [-111.86145708699996, 40.4945008710162], 'BAR')],

dtype=[('i', '

标签:python,python-2-7,numpy,structured-array

来源: https://codeday.me/bug/20190528/1173025.html

你可能感兴趣的:(python数组添加列)