Я пытаюсь создать массив np.zeros((3, 3))
вне функции и снова и снова использовать его внутри функции. Причина этого - реализация numba's
cuda
, которая не поддерживает array creation
внутренних функций, которые должны выполняться на gpu
. Итак, я создаю вышеупомянутый массив ar_ref
и передаю его в качестве аргумента function
. ar
создает копию ar_ref
(предполагается, что это будет использоваться как «fre sh» np.zeros((3, 3))
copy). Затем я вношу некоторые изменения в ar
и возвращаю его. Но в процессе ar_ref
перезаписывается внутри функции последней итерацией ar
. Как мне начинать каждую новую итерацию функции с ar = np.zeros((3, 3))
без необходимости вызывать np.zeros
внутри function
?
import numpy as np
def function(ar_ref=None):
for n in range(3):
print(n)
ar = ar_ref
print(ar)
for i in range(3):
ar[i] = 1
print(ar)
return ar
ar_ref = np.zeros((3, 3))
function(ar_ref=ar_ref)
Вывод:
0
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
1
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
2
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]