python - 通过函数调用在 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 方法来做到这一点?
解决方案
您可以在一行中完成所有这些操作:
m = [[(kernel(objlist[i], objlist[j]) for j in range(len(objlist))] for i in range(len(objlist))]
推荐阅读
- javascript - 如果放大图表区域的空白位置,浏览器会冻结
- string - 在字符串中的单词之间添加字符
- python - map_fn 的 TensorFlow 参数数组
- javascript - 如何在不使用 `(?
我知道
(?<!)
operator 背后的负面形象,但 Expo/React-Native 中使用的 Javascript 引擎似乎不支持它。我想要的是实现以下export function processEmbedded(text: string): string { return text.replace(/(?<!!)\[Embedded\]/
- c++ - 程序不会返回匹配搜索的名称计数
- javascript - 如何解决在 localhost 但不在 aws 上工作的条带
- matlab - MATLAB 收集具有公分母的项
- r - 重置缺失值的数量?
- multithreading - 线程成功退出后,什么会延迟 pthread_join()?
- sql - 选择具有两个简单特征的所有不同行