【问题标题】:median_absolute_deviation of 2D array throws AxisError: axis 1 is out of bounds for array of dimension 12D 数组的 median_absolute_deviation 抛出 AxisError:轴 1 超出维度 1 数组的范围
【发布时间】:2020-10-30 13:05:56
【问题描述】:

这段代码是:

import scipy as sp 
import numpy as np

print(temps.shape)
print(temps.ndim)
mad = sp.stats.median_absolute_deviation(temps, axis=1, nan_policy='omit')
med = np.median(temps, axis=1)
mean = np.mean(temps,axis=1)

temps.shape 是 (992,2048),temps.ndim 是 2

但是使用median_absolute_deviation 的第3 行抛出AxisError:轴1 超出了维度1 数组的范围。如果我注释掉该行,medmean 运行良好,没有轴错误。为什么会发生这种情况,如何计算沿长度 2048 轴的中值绝对偏差?

【问题讨论】:

  • 您使用的是哪个版本的 scipy?您可以通过import scipy; print(scipy.__version__) 查询

标签: python arrays numpy scipy


【解决方案1】:

我没有您的确切数组,但我尝试复制您的代码以产生您的错误:

from scipy.stats import median_absolute_deviation
import numpy as np

# mimicking your data with random numbers
temps = np.random.normal(0.0, 1.0, size=(992,2048))
# setting values of axis 1 to NaN
temps[:,1] = np.nan

print(temps.shape)
print(temps.ndim)
mad = median_absolute_deviation(temps, axis=1, nan_policy='omit')
med = np.median(temps, axis=1)
mean = np.mean(temps,axis=1)

使用median_absolute_deviation() 中的参数nan_policy='omit',您实际上是在要求函数从数组temps 中删除所有np.nan 值。

如上所示,如果有一整列的这些值,它们会通过调用 nan_policy='omit' 被删除,因此数组 temps 被缩减为维度为 1 的数组,您看到的错误就会出现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2022-07-03
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 2018-05-22
    相关资源
    最近更新 更多