Вот моя проблема: у меня есть одна n-мерная матрица (numpy массив), длинная ось которой содержит нужные мне данные.
Мне нужно нормализовать каждую запись матрицы. Например, для такой матрицы:
[1 2 3]
[2 3 4]
[7 8 9]
[3 2 1]
мне нужно было бы нормализовать каждый столбец индивидуально.
В моем коде я работаю с 3-мерным массивом, поэтому он выглядит вот так:
to_plot_OFF = FFT_OFF
for row, element in enumerate(to_plot_OFF):
for col, element_c in enumerate(element):
to_plot_OFF[row][col] = element_c/np.max(abs(element_c[10:250]))
to_plot_OFF = np.transpose(to_plot_OFF)
Где мои исходные данные содержатся в FFT_OFF
(который я не sh изменять), а обработанные данные находятся в to_plot_OFF
.
Я использую первую строку для получения нужной мне формы матрицы. L oop нормализует каждый столбец данных индивидуально.
Однако проблема в том, что в конце l oop обе матрицы (to_plot_OFF
и FFT_OFF
) идентичны (за исключением для транспозиции)! Хуже того, матрица FFT_OFF
каким-то образом изменяется в течение l oop, и ее записи нормализуются.
Я не могу понять, что здесь происходит. Если я попытаюсь сделать более простой пример:
a = np.array([1,2,3])
b = a
b = b/np.max(b)
Это не изменяет переменную a.
Может ли кто-нибудь дать некоторое представление о том, что здесь происходит? Я подозреваю, что это связано с первой строкой, где я пишу to_plot_OFF = FFT_OFF
. Однако не следует ли этой строке выделять новый блок в памяти для матрицы to_plot_OFF
вместо того, чтобы просто объявлять указатель на тот же адрес памяти FFT_OFF
?
Любая помощь будет принята с благодарностью.
Спасибо!