此代码抛出异常:
"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及其复杂的新手,任何帮助都会受到赞赏。
由于
答案 0 :(得分: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数组。
答案 1 :(得分:0)
使用shape = (N,)
表达NumPy 数组向量更为常见。例如:
>>> 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_N
索引为col_sig_N[p]
,但对于col_sig_1byN
,您必须col_sig_1byN[0,p]
- 请注意[x,y]
是索引为多维的方式NumPy数组。
要为整行/列编制索引,您可以执行[x,:]
/ [:,y]
。
而且,as kindall said,您不应该将数组嵌入列表中。