首页 > 解决方案 > 通过函数调用在 numpy 中计算矩阵

问题描述

我有将固定长度的特征向量n(1d numpy 数组)分配给对象的函数:feature_vector(obj).

我还有一个函数可以计算 2 个对象的特征向量的点积(不需要点积的整个函数……我知道。但我认为它将来会比点积更复杂):

def kernel(obj1, obj2):
    return return np.dot(feature_vector(obj1), feature_vector(obj2))

现在我得到了m这些对象的列表,并想为相应的内核计算一个矩阵:

def computematrix(objlist):
    m = np.zeros((len(objlist), len(objlist)))
    for i in range(len(objlist)):
        for j in range(len(objlist)):
            m[i][j] = kernel(objlist[i], objlist[j])
    return m

有没有更有效的 /mory pythonic /more numpy 方法来做到这一点?

标签: pythonpython-3.xnumpy

解决方案


您可以在一行中完成所有这些操作:

m = [[(kernel(objlist[i], objlist[j]) for j in range(len(objlist))] for i in range(len(objlist))]

推荐阅读