你的線裂痕看起來不錯
In [110]: data = ['1 a #', '3 e &']
In [111]: for n in range(len(data)): data[n] = data[n].split()
In [112]: data
Out[112]: [['1', 'a', '#'], ['3', 'e', '&']]
In [113]: A=np.array(data)
In [114]: A
Out[114]:
array([['1', 'a', '#'],
['3', 'e', '&']],
dtype='<U1')
In [115]: A.shape
Out[115]: (2, 3)
In [116]: A.T
Out[116]:
array([['1', '3'],
['a', 'e'],
['#', '&']],
dtype='<U1')
In [117]: A.T.tolist()
Out[117]: [['1', '3'], ['a', 'e'], ['#', '&']]
我可以 '轉置' 一個列表也有zip
:
In [119]: list(zip(*data))
Out[119]: [('1', '3'), ('a', 'e'), ('#', '&')]
原始列表的分裂也可以用一個列表理解
In [120]: [i.split() for i in ['1 a #', '3 e &']]
Out[120]: [['1', 'a', '#'], ['3', 'e', '&']]
你可能已經聯合文件中讀取並且用類似
[i.strip().split() for i in f.readlines()]
readlines
拆分完成返回行的列表,但他們仍然包括\n
,其中strip
刪除。另外要注意的是數據線
===================
在外殼之間的空白行,目前還不清楚,
In [122]: data = ['1 a #', '3 e &']
In [123]: np.array(data)
Out[123]:
array(['1 a #', '3 e &'],
dtype='<U5')
產生2元素數組,其中每個元素是5個字符的字符串。重塑或移調不會將其轉換爲單個元素字符串的數組。你可以重塑成其他2元陣列
In [124]: _.reshape(2,1)
Out[124]:
array([['1 a #'],
['3 e &']],
dtype='<U5')
In [125]: __.reshape(1,2,1)
Out[125]:
array([[['1 a #'],
['3 e &']]],
dtype='<U5')
我能view
它作爲一個單一的字符數組:
In [128]: A.view('<U1')
Out[128]:
array(['1', ' ', 'a', ' ', '#', '3', ' ', 'e', ' ', '&'],
dtype='<U1')
In [129]: A.view('<U1').reshape(5,2)
Out[129]:
array([['1', ' '],
['a', ' '],
['#', '3'],
[' ', 'e'],
[' ', '&']],
dtype='<U1')
,但在路上那些空白字符得到。
還存在適用字符串函數到陣列庫:
np.concatenate(np.char.split(A)).reshape(2,3)
重新看一下'data'的內容。你確定它符合你的想法嗎?這聽起來像你的文件可能以'\ n''結尾,將字符視爲行*終止符*而不是行*分隔符*。 – user2357112