我有一个 numpy 矩阵 X,我想将 2 列之间的所有可能产品作为新变量添加到该矩阵中。

So if X=(x1,x2,x3) I want X=(x1,x2,x3,x1x2,x2x3,x1x3)

有没有一种优雅的方法来做到这一点?
我认为 numpy 和 itertools 的组合应该可以工作

编辑:
很好的答案,但他们是否认为 X 是一个矩阵?那么 x1,x1,.. x3 最终可以是数组吗?

编辑:
一个真实的例子
a=array([[1,2,3],[4,5,6]])

最佳答案

Itertools 应该是这里的答案。

a = [1, 2, 3]
p = (x * y for x, y in itertools.combinations(a, 2))
print list(itertools.chain(a, p))

结果:
[1, 2, 3, 2, 3, 6] # 1, 2, 3, 2 x 1, 3 x 1, 3 x 2

关于python 列之间所有可能的产品,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22041561/

10-14 19:10