你可以先閱讀一切,floats
和數組轉換爲structured array
,你知道後你多少列有:
##input.txt:
## 1 1.4 5e23
## 2 2.3 5e-12
## 3 5.7 -1.3e-2
import numpy as np
data = np.genfromtxt('input.txt')
print(data)
print('-'*50)
colw = data.shape[1]
dtypes = [('col0', int)]+[('col{}'.format(i+1),float) for i in range(colw-1)]
print(dtypes)
print('-'*50)
converted_data = np.array([tuple(r) for r in data], dtype = dtypes)
print(converted_data)
這給出了以下的輸出:
[[ 1.00000000e+00 1.40000000e+00 5.00000000e+23]
[ 2.00000000e+00 2.30000000e+00 5.00000000e-12]
[ 3.00000000e+00 5.70000000e+00 -1.30000000e-02]]
--------------------------------------------------
[('col0', <class 'int'>), ('col1', <class 'float'>), ('col2', <class 'float'>)]
--------------------------------------------------
[(1, 1.4, 5.00000000e+23) (2, 2.3, 5.00000000e-12)
(3, 5.7, -1.30000000e-02)]
Python 3.0測試版
你能發表你輸入文件的頭幾行和你收到的錯誤信息嗎? –
'dtype = None'會爲你工作嗎?或者將dtype保留爲默認浮點數並獲得一個2d數組而不是結構化數組。 – hpaulj
我想要一個二維數組作爲後來我想切片的數據和改變某些列。我可以將它保留爲浮點數,但是我正在編寫新文件,並希望儘可能地減小文件大小,只要可能,將數字減少到int。 –