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)
我该如何解决这个问题?
检查您的数组是否是二维数组查询a.ndim。您可能有一个一维对象数组,打印时看起来像一个二维数组。在这种情况下,您可以将其转换为二维数组:
a = np.array(list(a))
Run Code Online (Sandbox Code Playgroud)
或者
a = np.array(tuple(a))
Run Code Online (Sandbox Code Playgroud)
迈克尔,
我不确定你为什么会遇到这个问题。这可能是因为您定义二维数组的方式(这是我唯一的猜测)。我使用了以下代码并且它工作正常:
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)