确定多维numpy数组中是否至少有一个零

时间:2015-12-14 23:07:55

标签: python numpy

我有以下代码: 存在一个numpy数组multidimensional_array,它具有所有整数且没有零,或者在许多整数中为零:

zeros_list = []   

for line in multidimensional_array:   # if find any zeros, append to list 'zeros'
    for x in line:
        if x.any() == 0:
            zeros_list.append(x)
        else:
            pass

for item in zeros:
    if item == 0:
        sys.stdout.write( 'True')   # if there is a zero, True
    else:
        sys.stdout.write( 'False')  # otherwise, False

不幸的是,这并没有正确运行。如果为零,则输出True。如果没有,没有任何反应。每次我在python脚本script.py中运行它时,它都应该重置。如何将其设置为运行“假”'?

5 个答案:

答案 0 :(得分:4)

>>> import numpy as np
>>> A = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> (A==0).any()
False
>>> (A!=0).all()
True
>>> 0 not in A
True
>>> A = np.array([[1,2,3],[4,5,6],[7,0,9]])
>>> (A==0).any()
True
>>> (A!=0).all()
False
>>> 0 not in A
False

您的最终for循环应该只是if

if zeros:
    sys.stdout.write('True')   # if there is a zero, True
else:
    sys.stdout.write('False')  # otherwise, False

答案 1 :(得分:3)

  

对不起它是一个[多维] numpy数组。 numpy数组中是否存在或没有一个零?这是测试

好吧,那会让我们到位。你可以简单地发出

0 in multidimensional_array

演示:

>>> import numpy as np
>>> test1 = np.arange(6).reshape(2,3)
>>> test1
array([[0, 1, 2],
       [3, 4, 5]])
>>> 0 in test1
True
>>> test1[0][0] = 42
>>> test1
array([[42,  1,  2],
   [ 3,  4,  5]])
>>> 0 in test1
False

答案 2 :(得分:2)

既然你说s是一个字符串,那么使用string.count()

会更容易
>>> s = '112312390'
>>> s.count('0')
1
>>> s = '11231239'
>>> s.count('0')
0
>>>

答案 3 :(得分:0)

添加

import sys
zeros_list = []
string1 = input() #If you received the string this way, below code is valid. 

for line in string1:   # if find any zeros, append to list 'zeros'
    for x in line:
        if x == '0':#Here you should not check for digits when ciphering a string. Unless you put int(item) which could cause a TypeError
            zeros_list.append(x)
        else:
            pass

for item in zeros_list:
    if item == '0': #Here you should not check for digits when ciphering a string. Unless you put int(item) which could cause a TypeError
        sys.stdout.write( 'True')   # if there is a zero, True
    else:
        sys.stdout.write( 'False')  # otherwise, False`

for item in zeros: #Did you mean zeros_list?

结束注释, any()不是内置的Python函数,这是在哪里发生的?请包含运行代码所需的所有代码。

我的观点是纠正的,任何()都是useful function:D

您知道, 0在Python中作为布尔值为False。

    if item == 0:

在第二个for循环中可能会有不同于您期望的结果。

答案 4 :(得分:-1)

如果你追加zeros_list,那么应该是:

for item in zeros_list: