我正在尝试操作数组并执行操作。 我的输入是一个数组
a= [['f' '0' '1' '0' '1' '0']
['o' '0' '0' '1' '0' '0']
['o' '0' '1' '0' '1' '1']
['!b' '1' '0' '1' '0' '0']
['a' '0' '0' '1' '0' '0']
['r' '0' '1' '0' '1' '1']]
如果我取第一行,我的输出应该只是1所在的列。同样,我为每一行做了输出。所以我的输出应该是一个数组。
output = [['f' '1' '1'
'o' '0' '0'
'o' '1' '1'
'!b' '0' '0'
'a' '0' '0'
'r' '1' '1' ]
['f' '0'
'o' '1'
'o' '0'
'!b' '1'
'a' '1'
'r' '0' ]
['f' '1' '1' '0'
'o' '0' '0' '0'
'o' '1' '1' '1'
'!b' '0' '0' '0'
'a' '0' '0' '0'
'r' '1' '1' '1']
['f' '0' '0'
'o' '0' '1'
'o' '0' '0'
'!b' '1' '1'
'a' '0' '1'
'r' '0' '0' ]
['f' '0'
'o' '1'
'o' '0'
'!b' '1'
'a' '1'
'r' '0' ]
['f' '1' '1' '0'
'o' '0' '0' '0'
'o' '1' '1' '1'
'!b' '0' '0' '0'
'a' '0' '0' '0'
'r' '1' '1' '1']]
这是我的代码
output = []
for i in a:
for j in i:
if j == 1:
output = a[0:]
output.append([n][j]) for n in len(i)
else:
pass
答案 0 :(得分:1)
对于每一行,生成一个矩阵,该矩阵只包含此行中具有'1'
的列。
import numpy as np
a = np.array([['f', '0', '1', '0', '1', '0'],
['o', '0', '0', '1', '0', '0'],
['o', '0', '1', '0', '1', '1'],
['!b', '1', '0', '1', '0', '0'],
['a', '0', '0', '1', '0', '0'],
['r', '0', '1', '0', '1', '1']])
l = []
for r in a:
l.append(a[:, [i for i, c in enumerate(r) if i == 0 or c == '1']])
print l
这可行,但也许更熟悉numpy的人可能会做得更好。
产地:
[array([['f', '1', '1'],
['o', '0', '0'],
['o', '1', '1'],
['!b', '0', '0'],
['a', '0', '0'],
['r', '1', '1']],
dtype='|S2'), array([['f', '0'],
['o', '1'],
['o', '0'],
['!b', '1'],
['a', '1'],
['r', '0']],
dtype='|S2'), array([['f', '1', '1', '0'],
['o', '0', '0', '0'],
['o', '1', '1', '1'],
['!b', '0', '0', '0'],
['a', '0', '0', '0'],
['r', '1', '1', '1']],
dtype='|S2'), array([['f', '0', '0'],
['o', '0', '1'],
['o', '0', '0'],
['!b', '1', '1'],
['a', '0', '1'],
['r', '0', '0']],
dtype='|S2'), array([['f', '0'],
['o', '1'],
['o', '0'],
['!b', '1'],
['a', '1'],
['r', '0']],
dtype='|S2'), array([['f', '1', '1', '0'],
['o', '0', '0', '0'],
['o', '1', '1', '1'],
['!b', '0', '0', '0'],
['a', '0', '0', '0'],
['r', '1', '1', '1']],
dtype='|S2')]