python – 将numpy.array中的每个元素与numpy.array中的每个元素相乘

python – 将numpy.array中的每个元素与numpy.array中的每个元素相乘,第1张

概述鉴于两个numpy.arrays a和b, c = numpy.outer(a, b) 返回二维数组,其中c [i,j] == a [i] * b [j].现在,想象一下有k个维度. >哪个 *** 作返回维数为k 1的数组c,其中c […,j] == a * b [j]? 另外,让b具有l维度. >哪个 *** 作返回维数为k 1的数组c,其中c […,i1,i2,i3] == a * b [i1,i2,i3] 鉴于两个numpy.arrays a和b,
c = numpy.outer(a,b)

返回二维数组,其中c [i,j] == a [i] * b [j].现在,想象一下有k个维度.

>哪个 *** 作返回维数为k 1的数组c,其中c […,j] == a * b [j]?

另外,让b具有l维度.

>哪个 *** 作返回维数为k 1的数组c,i1,i2,i3] == a * b [i1,i3]?

解决方法 outer method的NumPy ufuncs以你想要的方式处理多维输入,所以你可以做到
numpy.multiply.outer(a,b)

而不是使用numpy.outer.

这里提出的所有解决方案同样快速;对于小数组,multiply.outer有一个轻微的边缘

生成图像的代码:

import numpyimport perfplotdef multiply_outer(data):    a,b = data    return numpy.multiply.outer(a,b)def outer_reshape(data):    a,b = data    return numpy.outer(a,b).reshape((a.shape + b.shape))def tensor_dot(data):    a,b = data    return numpy.tensordot(a,b,0)perfplot.show(        setup=lambda n: (numpy.random.rand(n,n),numpy.random.rand(n,n)),kernels=[multiply_outer,outer_reshape,tensor_dot],n_range=[2**k for k in range(7)],logx=True,logy=True,)
总结

以上是内存溢出为你收集整理的python – 将numpy.array中的每个元素与numpy.array中的每个元素相乘全部内容,希望文章能够帮你解决python – 将numpy.array中的每个元素与numpy.array中的每个元素相乘所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1206821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存