python 导入数据对不齐_NumPy:使用loadtxt或genfromtxt读取参差不齐的结构
據我所知,你確實需要一個定制的循環“分鑄”。在
事實上,NumPy可以讀取像您這樣的嵌套結構,但它們必須具有固定的形狀,如Innumpy.loadtxt('data.txt', dtype=[ ('time', np.uint64), ('pos', [('x', np.float), ('y', np.float)]) ])
嘗試使用所需的數據類型讀取數據時,NumPy只讀取每個元組的第一個數字:
^{pr2}$
因此打印[(9998, 1, 1, 128, '10097')
(9999, 1, 1, 128, '10098')
(10000, 1, 1, 128, '10099')…]
所以,我會說繼續使用for循環,而不是numpy.loadtxt()。在
您還可以使用一種可能更快的中間方法:讓NumPy用上述代碼加載文件,然后手動“更正”N字段:dt=[('E', '
arr = numpy.loadtxt('data.txt', dtype=dt) # Correctly reads the first 4 columns
with open('data.txt') as input_file:
for (line_num, line) in enumerate(input_file):
arr[line_num]['N'] = tuple(int(x) for x in line.split()[4:]) # Manual setting of the tuple column
這種方法可能比在for循環中解析整個數組要快。這將產生您想要的結果:[(9998, 1, 1, 128, (10097, 10098, 10199, 10198, 20298, 20299, 20400, 20399))
(9999, 1, 1, 128, (10098, 10099, 10200, 10199, 20299, 20300, 20401, 20400))
(10000, 1, 1, 128, (10099, 10100, 10201, 10200, 20300, 20301, 20402, 20401))
(10001, 1, 2, 44, (2071, 2172, 12373, 12272))
(10002, 1, 2, 44, (2172, 2273, 12474, 1237))]
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python 导入数据对不齐_NumPy:使用loadtxt或genfromtxt读取参差不齐的结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python2.7怎么升级python3
- 下一篇: 皇室战争狗球流打法是什么(17173皇室