python数组操作和重新排列

时间:2015-11-23 09:12:00

标签: python

我正在尝试操作数组并执行操作。 我的输入是一个数组

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

1 个答案:

答案 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')]