【发布时间】:2021-12-25 14:42:33
【问题描述】:
我刚开始学习 Python 库,今天我被困在一个 numpy 练习中。
假设我想生成一个 5x5 随机数组,其值彼此不同。此外,它的值必须在 0 到 100 之间。
我已经在此处查找了此内容,但没有找到适合我的问题的解决方案。转给你之前请看我咨询过的帖子:
这是我解决这个问题的尝试:
import numpy as np
M = np.random.randint(1, 101, size=25)
for x in M:
for y in M:
if x in M == y in M:
M = np.random.randint(1, 101, size=25)
print(M)
通过这样做,我得到的只是一个值错误:ValueError:具有多个元素的数组的真值是不明确的。使用 a.any() 或 a.all()
因此,我的第二次尝试如下:
M = np.random.randint(1, 101, size=25)
a = M[x]
b = M[y]
for a.any in M:
for b.any in M:
if a.any in M == b.any in M:
M = np.random.randint(1, 101, size=25)
print(M)
我又遇到了一个错误:AttributeError: 'numpy.int64' object attribute 'any' is read-only.
你能告诉我我做错了什么吗?我已经花了好几天的时间来解决这个问题,但没有想到其他任何事情:(
非常感谢!
【问题讨论】:
-
np.random.random((5,5))*100
-
关注测试线 -
if。这就是问题所在。查看M==y步骤。对此进行if测试有意义吗? -
choice有什么问题?您正在艰难地进行下去,反复创建值数组,直到满足条件为止。让numpy为您完成工作。 -
当错误信息告诉你使用
any时,它的意思是(M == b).any()。any是布尔运算,用于处理True/False值的数组。对数字的应用没有意义(如a.any())。 -
非常感谢@hpaulj 的见解,现在我对 any 函数有了更好的理解 :)