0

我正在使用以下代码从 csv 文件中读取数组。

na_orders = np.loadtxt(orders_file, delimiter=',', skiprows=0,dtype='i4,i4,i4,S5,S4,f4')

这返回一维

[(2011, 1, 10, 'A', 'B', 1500.0) (2011, 1, 13, 'A', 'S', 1500.0)
 (2011, 1, 13, 'I', 'B', 4000.0) (2011, 1, 26, 'G', 'B', 1000.0)
 (2011, 2, 2, 'X', 'S', 4000.0) (2011, 2, 10, 'X', 'B', 4000.0)
 (2011, 3, 3, 'G', 'S', 1000.0) (2011, 3, 3, 'I', 'S', 2200.0)
 (2011, 6, 3, 'I', 'S', 3300.0) (2011, 5, 3, 'I', 'B', 1500.0)
 (2011, 6, 10, 'AL', 'B', 1200.0) (2011, 8, 1, 'G', 'B', 55.0)
 (2011, 8, 1, 'G', 's', 55.0) (2011, 12, 20, 'A', 'S', 1200.0)]

我想要一个二维数组,它将每个元素分成不同的列

4

1 回答 1

1

使用dtype=object构造函数:

>>> import numpy as np
>>> l = [(2011, 1, 10, 'A', 'B', 1500.0), ..., (2011, 12, 20, 'A', 'S', 1200.0),]
>>> a = np.array(l, dtype='object')
>>> a
array([[2011, 1, 10, A, B, 1500.0],
...
       [2011, 12, 20, A, S, 1200.0]], dtype=object)
>>> a.shape
(14, 6)
>>> sum(a[:, -1])
26510.0

这样的数组不会像原始值数组那样有效,但它会支持 numpy 数组通常支持的所有操作,同时仍然在不同的列中提供不同的类型。

于 2013-03-31T17:52:21.897 回答