4

这是我的二维 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

4 回答 4

4

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

a = np.array(list(a))

或者

a = np.array(tuple(a))
于 2013-10-24T18:28:25.660 回答
1

最近遇到了同样的问题:

np.sum(myndarray, axis=0)

在从脚本调用的函数内执行时产生“ValueError:'axis' entry is out of bounds”错误。奇怪的是,当从 IPython shell 执行该行时,它运行顺利(我检查了 myndarray 变量在两个上下文中是否相同)。

我正在使用 Spyder,所以可能由于使用具有相同变量集的 Python 控制台 + pdb 和/或 IPython + ipdb,它以某种方式陷入了一种奇怪的状态。重新启动IDE解决了这个问题,这也解释了其他人无法重现该错误。

于 2017-04-12T17:07:08.940 回答
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

答案是:

[ 0.00803178  0.02526721  0.02593599  0.06308687  0.00281146]
于 2013-10-24T18:14:06.253 回答
0

这适用于因不同原因偶然发现此线程具有相同错误的人。

对于 0 以外的任何轴,我都有相同的错误。我使用a.ndim并看到数组中有 3 个维度。修复是array.reshape(x,y)使它成为 2d 然后从数组调用工作。

于 2020-03-30T01:36:14.047 回答