У меня есть много больших многомерных массивов NP (2D и 3D), используемых в алгоритме. В этом есть множество итераций, и во время каждой итерации массивы пересчитываются путем выполнения вычислений и сохранения во временные массивы одинакового размера. В конце одной итерации содержимое временных массивов копируется в фактические массивы данных.
Пример:
global A, B # ndarrays
A_temp = numpy.zeros(A.shape)
B_temp = numpy.zeros(B.shape)
for i in xrange(num_iters):
# Calculate new values from A and B storing in A_temp and B_temp...
# Then copy values from temps to A and B
A[:] = A_temp
B[:] = B_temp
Это прекрасно работает, однако копировать все эти значения, когда A и B могут просто поменяться местами, кажется немного расточительным. Следующее поменяет местами массивы:
A, A_temp = A_temp, A
B, B_temp = B_temp, B
Однако могут быть другие ссылки на массивы в других областях, которые это не изменит.
Кажется, что NumPy может иметь внутренний метод для замены внутреннего указателя данных двух массивов, например numpy.swap(A, A_temp)
. Тогда все переменные, указывающие на A
, будут указывать на измененные данные.