ValueError:“轴”条目超出范围//numpy

Mic*_*ael 5 python arrays numpy

这是我的 2D numpy 数组:

returns = np.array([
 [ -4.78878057e-03   9.79090927e-03  -2.06883581e-03  -1.25786164e-02]
 [  5.79128440e-03  -2.85791008e-03   1.69555388e-03  -5.63798220e-02]
 [  5.73427375e-05   2.45043133e-02   8.55025651e-03  -4.53257790e-02]
 [  6.75441635e-03   8.70168484e-03   1.07547532e-02  -1.36919315e-01]
 [  6.68332655e-03   6.76498174e-03   3.08225775e-03   0.00000000e+00]])
Run Code Online (Sandbox Code Playgroud)

当我尝试计算每列的 STD 时:

print np.std(returns, axis=1)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ValueError: 'axis' entry is out of bounds
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Sau*_*tro 5

检查您的数组是否是二维数组查询a.ndim。您可能有一个一维对象数组,打印时看起来像一个二维数组。在这种情况下,您可以将其转换为二维数组:

a = np.array(list(a))
Run Code Online (Sandbox Code Playgroud)

或者

a = np.array(tuple(a))
Run Code Online (Sandbox Code Playgroud)


Moe*_*Moe 0

迈克尔,

我不确定你为什么会遇到这个问题。这可能是因为您定义二维数组的方式(这是我唯一的猜测)。我使用了以下代码并且它工作正常:

import numpy as np

arr = np.array([                                                                \
[ -4.78878057e-03,   9.79090927e-03,  -2.06883581e-03,  -1.25786164e-02],       \
[  5.79128440e-03,  -2.85791008e-03,   1.69555388e-03,  -5.63798220e-02],       \
[  5.73427375e-05,   2.45043133e-02,   8.55025651e-03,  -4.53257790e-02],       \
[  6.75441635e-03,   8.70168484e-03,   1.07547532e-02,  -1.36919315e-01],       \
[  6.68332655e-03,   6.76498174e-03,   3.08225775e-03,   0.00000000e+00]        \
])

std = np.std(arr,axis=1)
print std
Run Code Online (Sandbox Code Playgroud)

答案是:

[ 0.00803178  0.02526721  0.02593599  0.06308687  0.00281146]
Run Code Online (Sandbox Code Playgroud)