numpy 将函数应用于2个向量以获得2D矩阵

8gsdolmq  于 2023-03-18  发布在  其他
关注(0)|答案(1)|浏览(138)

我的问题和this one完全一样,只是用Python而不是R。我找不到Python的类似问题,所以我问这个问题。
我有2个向量(实际上是列表)

a = [1,2,3]
b = [5,6,7]

定义的函数

def calc(i, j):
    return (i+j)/2

我想将calc函数应用于向量中的所有值对,以便获得矩阵(最好使用numpy包)。
这种情况下的预期结果为

result = [
           [3,   3.5,   4],
           [3.5,  4,  4.5], 
           [4,   4.5,   5]
         ]

我希望避免使用列表解析和for循环来实现这个结果。

92dk7w1h

92dk7w1h1#

您可以使用meshgrid

import numpy as np

a = [1, 2, 3]
b = [5, 6, 7]

def calc(i, j):
    return (i + j) / 2

A, B = np.meshgrid(a, b)

result = calc(A, B)

print(result)

输出:

[[3.  3.5 4. ]
 [3.5 4.  4.5]
 [4.  4.5 5. ]]

相关问题