1
也許這已被回答之前,但我很難找到問題。假設我有一個文件中的以下數據:如何拆分混合dtype 1D numpy數組?
date, id, int1, int2, int3
02/03/2015, 2, 23, 65, 99
10/06/2016, 4, 84, 12, 35
10/01/2017, 6, 53, 6, 78
我能快速地寫在形式的numpy的片段:
import StringIO
import numpy as np
hdr = 'date, id, int1, int2, int3'
date = '''
02/03/2015, 2, 23, 65, 99
10/06/2016, 4, 84, 12, 35
10/01/2017, 6, 53, 6, 78
'''
lines = '%s%s' % (hdr, date)
pseudo_file = StringIO.StringIO(lines)
np_dtypes = 'S10,%s' % ','.join(['i4' for x in hdr.split(',')[1:]])
np1 = np.genfromtxt(pseudo_file, delimiter=',', names=True, dtype=np_dtypes)
print np1
print np1.dtype.names
print np1.shape
print np1['date']
print np1['int3']
這會給我下面的輸出:
[('02/03/2015', 2, 23, 65, 99) ('10/06/2016', 4, 84, 12, 35)
('10/01/2017', 6, 53, 6, 78)]
('date', 'id', 'int1', 'int2', 'int3')
(3L,)
['02/03/2015' '10/06/2016' '10/01/2017']
[99 35 78]
人們可以看到numpy能夠成功解析數組。但是,如何將它分爲兩部分:
- 僅包含字符串(日期列)的1D數組;
- 另一個只有整數的1D數組。
拆分應該以保持每列的名稱結構的方式完成。
'日期= NP1 [」日期']]'應該適用於日期列,就像'int'列表一樣。 – hpaulj
謝謝@tom。我缺乏非常基本的numpy使用(現在仍然如此)。我會花很長時間思考這個解決方案。主要是因爲我在尋找numpy方法。大聲笑。 ;-)乾杯。 –
@hpaulj不保留列的名稱,請求的問題爲 – tom