@MaxiZm

Хочу написать функцию (python) по изменению какого элемента списка массивов(np.array) со списками, но выдает ошибку, как исправить?

Потребность в изменении каждого элемента-числа списка вида:
weights=[np.array([[0,0,0],
[0,0,0]]),np.array([[0,0,0],
[0,0,0]])]

При запуске функции
def generate_weights_bios(self): 
        for a in self.weights:    #self.weights это список такого же вида как и weights выше
            for b in a:
                for c in b:
                    self.weights[a][b][c]=randint(-1000,1000)/100

выдает ошибку
self.weights[a][b][c]=randint(-1000,1000)/100
TypeError: only integer scalar arrays can be converted to a scalar index

В чем беда?
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
for a in self.weights a будет не индексами, а элементами списка. В твоём случае - массивами numpy. Аналогично
for b in a: будет не индексами строк массива, а самими строками
for c in b: будет не индексами столбцов, а значениями ячеек. Так что
self.weights[a][b][c] получит вместо чисел-индексов массивы и сойдёт с ума.

А вообще, то что ты пытаешься сделать, делается тривиальнейше.
x = np.randint(-1000, 1000, size = (2, 3), dtype=np.float32)  # массив случайных чисел, две строки, три столбца
x /= 100.0  # делим поэлементно на сто

В список завернёшь сам, хотя я не понимаю почему список, а не еще одно измерение в массиве.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы