gpt4 book ai didi

python - numpy中两个数组的乘法

转载 作者:行者123 更新时间:2023-11-28 20:05:33 26 4
gpt4 key购买 nike

我有两个 numpy 数组:

x = numpy.array([1, 2])
y = numpy.array([3, 4])

我想创建一个产品元素矩阵:

[[3, 6],
[4, 8]]

最简单的方法是什么?

最佳答案

一种方法是使用 np.multiplyouter 函数(如果您想要与问题中的顺序相同,则进行转置):

>>> np.multiply.outer(x, y).T
array([[3, 6],
[4, 8]])

NumPy 中的大多数 ufunc 都具有这种有用的outer 功能(addsubtractdivide 等) .作为@Akavall suggests , np.outer 等价于此处的乘法情况。

或者,np.einsum可以一次执行乘法和转置:

>>> np.einsum('i,j->ji', x, y)
array([[3, 6],
[4, 8]])

第三种方法是在一个数组中插入一个新轴然后相乘,尽管这有点冗长:

>>> (x[:, np.newaxis] * y).T
array([[3, 6],
[4, 8]])

对于那些对性能感兴趣的人,这里是两个长度为 15 的数组的操作时间,从最快到最慢:

In [70]: x = np.arange(15)
In [71]: y = np.arange(0, 30, 2)
In [72]: %timeit np.einsum('i,j->ji', x, y)
100000 loops, best of 3: 2.88 µs per loop
In [73]: %timeit np.multiply.outer(x, y).T
100000 loops, best of 3: 5.48 µs per loop
In [74]: %timeit (x[:, np.newaxis] * y).T
100000 loops, best of 3: 6.68 µs per loop
In [75]: %timeit np.outer(x, y).T
100000 loops, best of 3: 12.2 µs per loop

关于python - numpy中两个数组的乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29848757/

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