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为什么会这样做,通过列表理解,您不是在修改列表,而是在创建一个新列表。