查找2D数组的行和列中的值

时间:2015-01-30 17:54:28

标签: python numpy

我试图找出给定行或2D数组的给定列中是否存在指定值。

函数 existsInRowOrCol 使用 in 运算符,这显然不适用于混合类型的嵌套列表。

如何解决这个问题?

import numpy as np

field = np.array([['.','.','.',8,'.','.',3,'.',4],      #0
                 ['.','.',6,'.','.','.','.',7,'.'],     #1
                 [2,'.','.','.',1,'.','.','.','.'],     #2
                 ['.',8,'.',3,'.',4,'.',6,'.'],         #3
                 [1,'.','.','.',5,'.','.',9,'.'],       #4
                 [5,'.','.','.',8,'.',7,'.','.'],       #5
                 ['.',9,'.',1,'.',8,'.',5,'.'],         #6
                 [3,'.','.',6,'.','.',8,'.','.'],       #7
                 ['.','.',8,'.',2,7,'.',1,'.'],         #8
                 ])

def existsInRowOrCol(entry, r, c):
    row = field[r,:]
    print(row)
    if entry in row:
        return True
    col = field[:,c]
    print(col)
    if entry in col:
        return True
    return False

print(existsInRowOrCol(8, 0, 0))

最后一个命令打印出false,但它应该是true。

注意:如果我用零替换点,它会起作用。

1 个答案:

答案 0 :(得分:0)

如果你的参赛作品引用了,那对我有用:

>>> a = numpy.array(['.','.','8'])
>>> a
array(['.', '.', '8'], 
    dtype='|S1')
>>> row = a[:]
>>> entry = 8
>>> if entry in row:
...    print 'true'
... 
>>> entry = '8'
>>> if entry in row:
...    print 'true'
... 
true

请确保以单引号传递条目。