Управление значениями 2D-массива в python с использованием al oop (с использованием numpy) - PullRequest
0 голосов
/ 11 июля 2020
import random as rand 

weights = np.zeros((3, 4))

print(weights, end = "\n\n")

for i in weights:
  for j in i:
    j = rand.randint(1, 10)

print(weights)

Итак, я поигрался с numpy и решил создать 2D-массив, заполненный нулями. Затем я хотел изменить значения элементов в массиве на случайные числа от 1 до 10. Используя приведенный выше код, 2D-массив не изменяется и остается заполненным нулями. Почему python ведет себя так, когда дело доходит до массивов?

Чтобы получить желаемый результат, мне пришлось сделать следующее:

import numpy as np
import random as rand 

weights = np.zeros((3, 4))

print(weights, end = "\n\n")

for i in range(len(weights)):
  for j in range(len(weights[i])):
    weights[i][j] = rand.randint(1, 9)

print(weights) 

Есть ли лучший способ сделать это так что мне не нужно прибегать к использованию range() и len()?

1 Ответ

1 голос
/ 11 июля 2020

Лучше сделать это во время инициализации:

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

Вы можете прочитать документацию здесь .

И почему python так себя ведет, с пониманием списка вы не изменяете список, вы создаете новый список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...