首页 > 解决方案 > 传递元素以高效运行

问题描述

我有一个大小为 mx n 的数组。我想将每个 m 行单独传递给一个函数并将结果保存在同一行中。

使用 numpy 执行此操作的有效方法是什么?目前我正在使用 for 循环来实现这一点:

X : size(m x n)
p : size(m x n)

for i in np.arange(X.shape[0]):
    X[i] = some_func(X[i], p[i])

标签: pythonfunctionnumpyarray-broadcasting

解决方案


您可以使用 List Comprehension 列出 X 和 p 矩阵的所有第一行,如下所示。然后您可以轻松地将 X 和 p 的第一行作为参数发送到您的some_function

import numpy as np

X =  np.random.randint(9, size=(3, 3))
p =  np.random.randint(9, size=(3, 3))

print(X.shape, p.shape)

XList = [i[0] for i in X]
pList = [j[0] for j in p]

print (XList)
print (pList)

for i in np.arange(XList, pList):
    X[i] = some_func(XList, pList)

推荐阅读