你的线裂痕看起来不错
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