我需要一些帮助来编辑我的代码,以便使用布尔值给我一个输出。是非题。
我有一个编写的代码,该代码搜索2d数组以查找> = 32的任何值。 但是目前,它循环遍历并给出每个值的答案。我只是在寻找单个输出,如果值等于或大于32,则为true。如果找不到这样的值,则为false。
我的代码是
grid = [[2, 0, 2, 0],
[0, 4, 0, 8],
[0, 16, 0, 128],
[2, 2, 2, 2]]
a = np.array(grid)
for row in grid:
for c in row:
if c >= 32:
print(True)
else:
print(False)
答案 0 :(得分:2)
查看是否有大于32的值:
(np.array(grid) > 32).any()
True
要获取索引:
np.where(np.array(grid) > 32)
(array([2], dtype=int64), array([3], dtype=int64))
答案 1 :(得分:1)
grid_array = np.array(grid)
print(np.any(grid_array >= 32))
答案 2 :(得分:1)
一种方法是在循环中设置一个true / false标志,然后在循环完成后打印该标志。
grid = [[2, 0, 2, 0],
[0, 4, 0, 8],
[0, 16, 0, 128],
[2, 2, 2, 2]]
flag = False
for row in grid:
for c in row:
if c >= 32:
flag = True
break
print(flag)
答案 3 :(得分:1)
非numpy版本:
print(any([x>=32 for y in grid for x in y]))
# True
答案 4 :(得分:1)
导入Numpy:
将numpy导入为np
声明您的数组:
x = np.array [[2,0,2,0], [0,4,0,8], [0,16,0,128], [2,2,2,2]]
x> 32
验证结果:
x
答案 5 :(得分:1)
您不必在每次检查值时都打印,而是可以在循环结束时添加打印语句-
grid = [[2, 0, 2, 0],
[0, 4, 0, 8],
[0, 16, 0, 128],
[2, 2, 2, 2]]
isTrue = False
for row in grid:
for c in row:
if c >= 32:
isTrue = True
print(isTrue)
答案 6 :(得分:1)
不使用itertools.chain.from_iterable
使用numpy
的示例,因此没有嵌套循环:
from itertools import chain
grid = [[2, 0, 2, 0],
[0, 4, 0, 8],
[0, 16, 0, 128],
[2, 2, 2, 2]]
print(any(x >= 32 for x in chain.from_iterable(grid)))
答案 7 :(得分:0)
那:
import numpy as np
grid = [[2, 0, 2, 0],
[0, 4, 0, 8],
[0, 16, 0, 128],
[2, 2, 2, 2]]
a = np.array(grid)
ix = np.where(a>=32)
您将获得大于32的行和列。