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)]

各要素を異なる列に分割する 2 次元配列が必要です

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 に答える