python - 循环遍历一个numpy数组
问题描述
我有一个 5 x 10 数组,如果随机数大于 0.9,我想翻转一下。但是,这只适用于数组的第一行,它不会到达第二行和后续行。我用 3 和 4 替换了这些位,所以我可以很容易地看到是否发生翻转。我得到的结果看起来像这样。
[[3 1 1 1 4 1 3 1 0 1]
[1 1 0 0 1 0 1 1 1 0]
[1 0 1 0 1 0 1 1 1 1]
[0 0 1 0 1 1 0 1 1 1]
[0 1 1 0 0 0 0 1 1 1]]
请帮我弄清楚我错在哪里。
from random import random
RM = np.random.randint(0,2, size=(5,10))
print(RM)
for k in range(0, RM.shape[0]):
for j in range(0, RM.shape[1]):
A = random()
if A > 0.9:
if RM[k,j] == 0:
np.put(RM, [k,j], [3])
print("k1",k)
print("j1", j)
else:
np.put(RM, [k,j], [4])
print("k2", k)
else:
continue
print(RM)
解决方案
查看np.put的文档
numpy.put(a, ind, v, mode='raise')[source] Replaces specified elements of an array with given values.
在示例下:
a = np.arange(5) np.put(a, [0, 2], [-44, -55]) a array([-44, 1, -55, 3, 4])
因此,如果您将列表提供给函数,它会替换展平数组中的多个值。
要使循环正常工作,只需将值分配给数组即可:
from random import random
RM = np.random.randint(0,2, size=(5,10))
print(RM)
for k in range(0, RM.shape[0]):
for j in range(0, RM.shape[1]):
A = random()
if A > 0.9:
if RM[k,j] == 0:
RM[k,j]=3
print("k1",k)
print("j1", j)
else:
RM[k,j] =4
print("k2", k)
else:
continue
推荐阅读
- reactjs - 如何避免与 socket.io-client 和 React 应用程序重新连接?
- eclipse - 无法在 Eclipse 2020-06 上安装 Gradle IDE Pack 3.8.x+1.0.x
- amibroker - 在此 python 代码中出现语法错误,如何消除?
- variables - 使用媒体查询和 scss 时如何更改变量值
- pygame - pygame 重新初始化后没有收到滚动事件
- android - 如何从firebase获取pdf文件?
- haskell - 如何获取 PKCS#7 结构中的证书指纹列表?
- kotlin - 在 Android 应用程序中将从改造 (MutableLiveData) 获取的数据与来自 Room DB (LiveData) 的数据同步
- kubernetes - 无法申请!使用 JSONPath 查询的 not 运算符来获取没有污点的节点
- domain-driven-design - 领域驱动设计:跨领域