【问题标题】:Raising arrays to a fractional index produces NaN?将数组提升到小数索引会产生 NaN?
【发布时间】:2021-12-06 15:11:29
【问题描述】:

我有一个数组,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, 南]])

为什么会这样?我尝试使用 np.power 以及

scipy.linalg 导入 fractional_matrix_power

这里有什么问题,因为数组是实数并且只有整数。

【问题讨论】:

  • 你能给我们一个完整的例子吗? Ndx 是什么?
  • 抱歉,已编辑!漫长的一天

标签: python numpy nan


【解决方案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]]

【讨论】:

  • 哦,我知道现在是怎么做到的了。我如何取这个的 abs 值?
  • np.absolute(kpower) 为您提供元素绝对值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多