将数组提高到分数索引产生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)

阵列([[0。, 0.0018999, 0.00537372,…,不,不,南]])

为什么会发生这种情况?我试过用np。Power和

scipy。

导入flactional_matrix_power

既然数组是实数并且只有整数,那么这里有什么关系呢?

您必须将数组的条目强制转换为复数,以便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]]