python numpy结构化数组issu

2024-06-17 03:54:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我对纽比比较陌生。我已经从.csv文件中导入了数据,其中的日期是从YYYY,MM,DD和其他一些东西。我想将所有内容放入一个数组中,日期采用“正确”的日期时间格式。这是我的代码:

na_trades = np.zeros((number_of_orders,), dtype = ('datetime64,a5,a5,i4'))
for row in range(number_of_orders):
    order = na_trades_csv[row]
    order_date = dt.datetime(order[0],order[1],order[2])
    order_date64 =  np.datetime64(order_date)
    na_trades[row] = (order_date64,order[3],order[4],order[5])

但是我得到了错误ValueError: error setting an array element with a sequence。你知道为什么吗?提前感谢您的帮助!在


Tags: 文件ofcsvnumberdatenpordertrades
2条回答

这是因为在numpy数组中(与python列表不同),不能将序列分配给数组中的单个元素。Python数组是非同质的(例如,不同的元素可以是不同的类型),并且并不真正关心您在其中放入什么,而Numpy数组有一个特定的类型。您试图将类型设置为复合类型(例如,带有datetime、两个字符串和一个int)但是numpy忽略了dtype字符串中datetime64后面的所有内容,因为您的语法有点偏离。在

尝试以下操作:

z = np.zeros((5,), dtype = np.dtype([('time','datetime64'),('year','a5'),('month','a5'),('day','i4')]))

这将创建一个numpy.void类型,其作用类似于字典。E、 g.然后您可以执行以下操作:

^{pr2}$

使用numpy版本1.6.2,dtype = 'datetime64,a5,a5,i4'不会产生预期的数据类型:

In [36]: na_trades = np.zeros((number_of_orders,), dtype = 'datetime64,a5,a5,i4')
In [37]: na_trades
Out[37]: array([1970-01-01 00:00:00], dtype=datetime64[us])

虽然我可能错了,但在我看来这是个错误。试试看:

^{pr2}$

相关问题 更多 >