使用循环(使用numpy)在python中操作2D数组的值


import random as rand 
weights = np.zeros((3, 4))
print(weights, end = "nn")
for i in weights:
for j in i:
j = rand.randint(1, 10)
print(weights)

所以我在玩numpy,决定制作一个充满0的2D阵列。然后,我想将数组中元素的值更改为1到10之间的随机数。使用上面的代码,2D数组不会发生变化,并且仍然填充有零。当谈到数组时,python为什么会这样做?

为了得到我想要的结果,我必须做以下事情:

import numpy as np
import random as rand 
weights = np.zeros((3, 4))
print(weights, end = "nn")
for i in range(len(weights)):
for j in range(len(weights[i])):
weights[i][j] = rand.randint(1, 9)
print(weights) 

有没有更好的方法可以做到这一点,这样我就不必使用range()len()了?

更好的方法是在初始化期间:

# args - low, high, shape
weights = np.random.randint(1, 9, (3, 4))

您可以在此处阅读文档。

至于python为什么会这样做,通过列表理解,您不是在修改列表,而是在创建一个新列表。