gpt4 book ai didi

python - numpy 中所有可能的列乘法?

转载 作者:行者123 更新时间:2023-12-01 02:51:21 28 4
gpt4 key购买 nike

我使用的是 m * n 形状的输入矩阵,或 m 行和 n 列。我希望计算列的所有可能组合的逐元素乘积。因此,我需要输出形状为 m * n*n 的矩阵。
更具体地说,假设我的输入矩阵具有列 [c1, c2, c3 ... cn] 。我的输出矩阵应类似于 [c1*c1 c1*c2 ... c1*cn c2*c1 c2*c2 ... cn*cn],其中 ci*cj 是一个向量,表示向量 cicj 的逐元素乘法。

我不想使用 for 循环,而是寻找一种使用 numpy API 来完成此操作的巧妙方法。

最佳答案

一种方法是使用 broacasting将输入数组扩展为两个 3D 扩展版本(沿第二个和第三个维度具有单维),然后执行逐元素乘法,并且需要对 2D 最终进行最终 reshape 输出。

因此,实现将是 -

(a[:,:,None]*a[:,None,:]).reshape(a.shape[0],-1)

换句话说,对于第二个扩展版本,使用 ... 并跳过 None 之后的最后一个轴,将是 -

(a[...,None]*a[:,None]).reshape(a.shape[0],-1)

另一种方法 np.einsum -

np.einsum('ij,ik->ijk',a,a).reshape(a.shape[0],-1)

关于python - numpy 中所有可能的列乘法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44729147/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com