gpt4 book ai didi

python - 矩阵每行包含特定数字

转载 作者:行者123 更新时间:2023-12-01 01:22:29 24 4
gpt4 key购买 nike

我想知道矩阵的每一行是否至少有一个零

i = 0
for row in range(rows):
if A[row].contains(0):
i += 1

i == rows

这是正确的还是有更好的方法?

最佳答案

您可以在单个矢量化操作中重现整个代码块的效果:

np.all((rows == 0).sum(axis=1))

或者(基于 Mateen Ulhaq 在评论中的建议),您可以这样做:

np.all(np.any(rows == 0, axis=1))

测试一下

a = np.arange(5*5).reshape(5,5)
b = a.copy()
b[:, 3] = 0

print('a\n%s\n' % a)
print('b\n%s\n' % b)

print('method 1')
print(np.all((a == 0).sum(axis=1)))
print(np.all((b == 0).sum(axis=1)))
print()

print('method 2')
print(np.all(np.any(a == 0, axis=1)))
print(np.all(np.any(b == 0, axis=1)))

输出:

a
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]

b
[[ 0 1 2 0 4]
[ 5 6 7 0 9]
[10 11 12 0 14]
[15 16 17 0 19]
[20 21 22 0 24]]

method 1
False
True

method 2
False
True

时间

%%timeit
np.all((a == 0).sum(axis=1))
8.73 µs ± 56.3 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

%%timeit
np.all(np.any(a == 0, axis=1))
7.87 µs ± 54 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

所以第二种方法(使用np.any)稍微快一些。

关于python - 矩阵每行包含特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53688331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com