#python #numpy #nan
Вопрос:
У меня есть массив, k, как показано в моем MWE. Я хочу поднять этот массив до степени 3/2, но когда я это делаю, возникает ошибка в кавычках.
import numpy as np
N = 2**15
dx = 0.1
k = (2 * np.pi / (N * dx)) * np.r_[0:N / 2, 0, -N / 2 1:0][None, :]
kpower = k**(3/2)
print(kpower)
array([[0. , 0.0018999 , 0.00537372, …, nan, nan,
nan]])
Почему это происходит? Я пробовал использовать np.power, а также
scipy.linalg импорт fractional_matrix_power
В чем здесь дело, поскольку массив реален и содержит только целые числа.
Комментарии:
1. Можете ли вы привести нам полностью рабочий пример? Что такое
N
иdx
?2. Извините, отредактировано! долгий день
Ответ №1:
Вы должны привести записи вашего массива к комплексным числам, чтобы numpy мог выполнить ваше возведение в степень:
import numpy as np
N = 5
dx = 2
k = (2 * np.pi / (N * dx)) * np.r_[0: N / 2, 0, -N / 2 1:0][None, :]
# convert array to complex datatype
k = k.astype(np.cdouble)
kpower = k**(3/2)
print(kpower)
Выход:
[[ 0.00000000e 00 0.j 4.98046397e-01 0.j
1.40868794e 00 0.j 0.00000000e 00 0.j
-1.68077199e-16-0.91496966j -3.23464720e-17-0.17608599j]]
Комментарии:
1. ооо, теперь я вижу, как это делается. Как мне принять значения abs для этого?
2. np.абсолют(kpower) дает вам абсолютные значения по элементам