Массив Numpy `fill_value` заполняет матрицу одним и тем же объектом с тем же идентификатором, а не независимыми объектамPython

Программы на Python
Anonymous
Массив Numpy `fill_value` заполняет матрицу одним и тем же объектом с тем же идентификатором, а не независимыми объектам

Сообщение Anonymous »

Вот краткий пример, демонстрирующий, как создание массива numpy работает с fill_value:

Код: Выделить всё

class ExampleObject():
pass

my_array = numpy.full(
shape=(3, 3),
fill_value=ExampleObject(),
)

for i in range(3):
for j in range(3):
print(id(my_array[i][j]) # returns same id for all entries
Очевидно, почему это происходит. fill_value установлен на один экземпляр объекта. В данном случае ПримерОбъект().
На самом деле я хочу, чтобы каждая запись была независимой, чтобы каждая запись в матрице была уникальным экземпляром ПримерОбъект.
Я тоже пробовал это:

Код: Выделить всё

my_array = numpy.fill(
shape=(3, 3),
fill_value=[ExampleObject() for _ in range(3*3)],
)
Однако это не удалось из-за ошибки ValueError: не удалось передать входной массив из формы (9,) в форму (3,3)
Есть ли способ заставить это работать? Возможно, что-то вроде использования функции (или другого вызываемого объекта), которая может возвращать новый объект exampleObject каждый раз, когда она вызывается? (По сути, это заводская функция.)

Подробнее здесь: https://stackoverflow.com/questions/788 ... not-indepe

Вернуться в «Python»