我正在從matplotlib.mlab.csv2rec函數中重新獲取數據。我的期望是它會有'x'這樣的2個維度,但它有'y'這樣的1個維度。有沒有辦法從y獲得x?有沒有可能將recarray轉換爲ndarray並更改ndim?
>>> import numpy as np
>>> from datetime import date
>>> x=np.array([(date(2000,1,1),0,1),
... (date(2000,1,1),1,1),
... (date(2000,1,1),1,0),
... (date(2000,1,1),0,0),
... ])
>>> x
array([[2000-01-01, 0, 1],
[2000-01-01, 1, 1],
[2000-01-01, 1, 0],
[2000-01-01, 0, 0]], dtype=object)
>>> y = np.rec.fromrecords(x)
>>> y
rec.array([(datetime.date(2000, 1, 1), 0, 1),
(datetime.date(2000, 1, 1), 1, 1),
(datetime.date(2000, 1, 1), 1, 0), (datetime.date(2000, 1, 1), 0, 0)],
dtype=[('f0', '|O4'), ('f1', '<i4'), ('f2', '<i4')])
>>> x.ndim
2
>>> y.ndim
1
>>> x.shape
(4, 3)
>>> y.ndim
1
>>> y.shape
(4,)
>>>
如果您的csv文件有兩列,csv2rec應該創建一個具有兩個維度的數組。你能提供一個你正在解析的文件的例子,以及你對csv2rec的調用嗎?此外,請注意,您可以使用新的numpy.genfromtxt而不是csv2rec:它可以更好地工作,但您必須將dtype = None作爲參數傳遞給它。 – dalloliogm 2009-10-19 15:06:19
實際上它有7列,第一個是格式dd/mm/yyyy的日期,然後是6雙打,可以是不同類型的原因? – maplpro 2009-10-19 21:44:20