加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 23:09:50 所属栏目:Python 来源:网络整理
导读:鉴于两个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 [
鉴于两个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 numpy
import perfplot


def 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,)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读