gpt4 book ai didi

python:如何将列添加到numpy中的记录数组

转载 作者:行者123 更新时间:2023-11-28 18:42:12 28 4
gpt4 key购买 nike

我正在尝试向 numpy 记录添加一列。

这是我的代码:

import numpy
import numpy.lib.recfunctions
data=[[20140101,'a'],[20140102,'b'],[20140103,'c']]
data_array=numpy.array(data)
data_dtype=[('date',int),('type','|S1')]
data_rec=numpy.core.records.array(list(tuple(data_array.transpose())), dtype=data_dtype)
data_rec.date
data_rec.type

#Here, i will just try to make another field called copy_date that is a copy of the date , just as an example

y=numpy.lib.recfunctions.append_fields(data_rec,'copy_date',data_rec.date,dtypes=data_rec.date.dtype,usemask=False)

现在看看输出

>>> type(y)
<type 'numpy.ndarray'>
>>> y.date
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'date'
>>> y.copy_date
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'copy_date'

y不再是像

这样的记录类型
>>> type(data_rec)
<class 'numpy.core.records.recarray'>

我好像失去了记录能力,就是通过属性调用字段。如何正确地将列添加到记录并能够调用字段?

另外,如果有人能告诉我上面代码中 usemask 选项的作用,我会很高兴。

谢谢

最佳答案

您可以传递 asrecarray=True 以从 numpy.lib.recfunctions.append_fields 中获取 recarray。

例如:

>>> y = numpy.lib.recfunctions.append_fields(data_rec, 'copy_date', data_rec.date, dtypes=data_rec.date.dtype, usemask=False, asrecarray=True)
>>> y.date
array([2, 2, 2])
>>> y
rec.array([(2, 'a', 2), (2, 'b', 2), (2, 'c', 2)],
dtype=[('date', '<i8'), ('type', '|S1'), ('copy_date', '<i8')])
>>> y.copy_date
array([2, 2, 2])

在 numpy 1.6.1 上测试

关于python:如何将列添加到numpy中的记录数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867747/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com