ValueError:'axis'条目超出界限// numpy

时间:2013-10-24 17:04:08

标签: 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]])

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

print np.std(returns, axis=1)

我收到以下错误:

ValueError: 'axis' entry is out of bounds

我该如何解决?

4 个答案:

答案 0 :(得分:4)

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

a = np.array(list(a))

a = np.array(tuple(a))

答案 1 :(得分:0)

迈克尔,

我不确定你为什么会遇到这个问题。这可能是因为你定义2D数组的方式(这是我唯一的猜测)。我使用了以下代码,它运行正常:

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

答案是:

[ 0.00803178  0.02526721  0.02593599  0.06308687  0.00281146]

答案 2 :(得分:0)

最近有同样的问题:

np.sum(myndarray, axis=0)

正在制作" ValueError:'轴'进入是超出范围"在从脚本调用的函数内执行时出错。奇怪的是,当从IPython shell执行该行时,它运行顺利(我检查了两个上下文中的myndarray变量是相同的)。

我正在和Spyder合作,所以也许它因为使用Python控制台+ pdb和/或IPython + ipdb以及相同的变量集而陷入了一种奇怪的状态。重新启动IDE解决了这个问题,这也解释了其他人的问题。无法重现错误。

答案 3 :(得分:0)

这是针对因不同原因而偶然发现此线程并具有相同错误的用户。

对于除0以外的任何轴,我都有相同的错误。我使用a.ndim并看到数组中有3维。修复程序是array.reshape(x,y),使其修复了2d,然后从数组调用成功了。