首页 > 解决方案 > 遍历 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

你能帮我吗?我很新。

标签: pythonarraysnumpymatrixcontrast

解决方案


由于我不知道 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)

推荐阅读