python - 遍历 numpy 数组行
问题描述
我正在尝试获取此对比矩阵的每一行,执行分母变量中定义的操作,将它们相加,然后除以行数。当我尝试做这样的事情时,我得到一个“无效的语法错误”(使用 python 3)。这个问题来自 fMRI 单变量分析背景。X 是预定义的,您可以忽略它。我只是想用分母变量中的矩阵做一个点积。
X = simulate_two_predictors(N=350, shift=30, TR=2)
contrast_matrix = np.array([
[0, 1, 0],
[0, 0, 1],
[0, 1, -1]
])
for i in range(contrast_matrix.shape[0]):
denominator = (contrast_matrix[i,:] @ inv(X.T @ X) @
(contrast_matrix[i,:].T))
return contrast_matrix.size / denominator
你能帮我吗?我很新。
解决方案
由于我不知道 X simulation_two_predictors 的输出是什么样的,所以我做了一些假设。
如果我错了,请纠正我,return 关键字仅在您从函数返回时才有效。
import numpy as np
contrast_matrix = np.array([[0, 1, 0],
[0, 0, 1],
[0, 1, -1]])
X = simulate_two_predictors(N=350, shift=30, TR=2)
for i in range(contrast_matrix.shape[0]):
# do something here
denominator = (contrast_matrix[i,:]) @ (np.linalg.inv(X.T @ X) @ (contrast_matrix[i,:].T))
# reassign value
contrast_matrix[i,:] = (contrast_matrix.size / denominator)
print(contrast_matrix)