0

此代码引发异常:

"list index out of range"

在下面标记的行。

col_sig_squared = [np.zeros(shape=(1,6), dtype=int)]

def calculate_col_sigma_square(matrix):
    mx = np.asarray(matrix)
    for(x,y), value in np.ndenumerate(matrix):
    if(x > 4):
            continue
    else:
        val = matrix[x][y] - x_bar_col[x]
        val = val**2
        EXCEPTION-->print col_sig_squared[y] 

为什么这是个问题?col_sig_squared是一个带索引的数组。为什么我不能像这样访问它。尝试了很多东西,但不确定为什么这种语法是错误的。我是 Python 及其复杂性的新手,任何帮助将不胜感激。

谢谢

4

2 回答 2

1

好吧,该消息非常清楚地告诉您出了什么问题。y在那一点上大于 中的项目数col_sig_squared。这并不让我感到惊讶,因为col_sig_squared它被定义为一个包含一个项目的列表,一个 NumPy 数组:

col_sig_squared = [np.zeros(shape=(1,6), dtype=int)]

这意味着只有col_sig_squared[0]有效。

也许你的意思是:

col_sig_squared = np.zeros(shape=(1,6), dtype=int)

现在col_sig_squared是一个 NumPy 数组。

于 2012-10-24T19:19:20.733 回答
0

使用 . 来表示 NumPy数组向量更为常见shape = (N,)。例如:

>>> col_sig_1byN = np.zeros(shape=(1,6), dtype=int)
>>> col_sig_N = np.zeros(shape=(6,), dtype=int)
>>> print col_sig_1byN
[[0 0 0 0 0 0]]
>>> print col_sig_N
[0 0 0 0 0 0]

您可以索引col_sig_Ncol_sig_N[p],但col_sig_1byN您必须这样做col_sig_1byN[0,p]- 请注意,这[x,y]是索引到多维 NumPy 数组的方法。

要索引整行/列,您可以执行[x,:]/ [:,y]

而且,正如kindall所说,你不应该将你的数组嵌入到一个列表中。

于 2012-10-24T20:55:42.183 回答