开发者社区> 问答> 正文

Numpy:将两个数组合并为一个矩阵,然后用lambda进行映射

我想两者结合起来numpy.ndarray使用(m, n)元素融入一个m x n矩阵,然后将一个函数/λ映射值。

例如:

import numpy as np
X = np.array([1,2,3])
Y = np.array([4,5,6,7])
Z = cross_combine(X, Y)

combine two arrays into a matrix containing the tuple (Xi, Yj)

array([[(1,4), (1,5), (1,6), (1,7)],

[(2,4), (2,5), (2,6), (2,7)],

[(3,4), (3,5), (3,6), (3,7)]])

Z = Z.map(lambda x, y: x * y)

map values with a lambda or a function

array([[4, 5, 6, 7],

[8, 10, 12, 14],

[12, 15, 18, 21]])

映射功能很复杂。什么cross_combine和map在numpy的功能呢?我怎样才能轻松实现这一目标?

展开
收起
k8s小能手 2019-01-11 14:00:34 3685 0
1 条回答
写回答
取消 提交回答
  • 整合最优质的专家资源和技术资料,问答解疑

    对于您的特定示例,您可以使用np.meshgrid并reduce:

    import numpy as np

    def mesh(values):

    return np.array(np.meshgrid(*values)).T
    

    X = [1,2,3]
    Y = [4,5,6,7]

    Z = mesh([X, Y])

    result = np.multiply.reduce(Z, axis=2)
    print(result)
    产出
    [[ 4 5 6 7]
    [ 8 10 12 14]
    [12 15 18 21]]
    对于自定义函数,您可以使用np.frompyfunc:

    def_mult = np.frompyfunc(lambda x, y: x * y, 2, 1)
    result = def_mult.reduce(Z, axis=2)
    print(result)
    产出

    [[4 5 6 7]
    [8 10 12 14]
    [12 15 18 21]]

    2019-07-17 23:25:19
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载