这是我的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
我该如何解决?
答案 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,然后从数组调用成功了。