簡體   English   中英

2D 數組的 median_absolute_deviation 拋出 AxisError: axis 1 is out of bounds for array of dimension 1

[英]median_absolute_deviation of 2D array throws AxisError: axis 1 is out of bounds for array of dimension 1

代碼塊是:

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 軸的中值絕對偏差?

我沒有您的確切數組,但我嘗試復制您的代碼以產生您的錯誤:

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' ,您實際上是在要求 function 從數組temps中刪除所有np.nan值。

正如我在上面所展示的,如果有一整列的這些值,它們會通過調用nan_policy='omit'被刪除,因此數組temps被縮減為一個維度為 1 的數組,並且您看到的錯誤就會出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM