将2D阵列中的每一列与另一个2D阵列中的每一列相乘

cbrnr

我有两个Numpy数组x,它们的形状(m, i)y形状都相同(m, j)(所以行数是相同的)。我想将element的x每一列乘以yelement-wise的每一列,使结果为shape (m, i*j)

例子:

import numpy as np

np.random.seed(1)
x = np.random.randint(0, 2, (10, 3))
y = np.random.randint(0, 2, (10, 2))

这将创建以下两个数组x

array([[1, 1, 0],
       [0, 1, 1],
       [1, 1, 1],
       [0, 0, 1],
       [0, 1, 1],
       [0, 0, 1],
       [0, 0, 0],
       [1, 0, 0],
       [1, 0, 0],
       [0, 1, 0]])

y

array([[0, 0],
       [1, 1],
       [1, 1],
       [1, 0],
       [0, 0],
       [1, 1],
       [1, 1],
       [1, 1],
       [0, 1],
       [1, 0]])

现在的结果应该是:

array([[0, 0, 0, 0, 0, 0],
       [0, 0, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1],
       [0, 0, 0, 0, 1, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 1, 1],
       [0, 0, 0, 0, 0, 0],
       [1, 1, 0, 0, 0, 0],
       [0, 1, 0, 0, 0, 0],
       [0, 0, 1, 0, 0, 0]])

目前,我已经实现此操作超过的列中的两个嵌套循环xy

def _mult(x, y):
    r = []
    for xc in x.T:
        for yc in y.T:
            r.append(xc * yc)
    return np.array(r).T

但是,我很确定必须有一个似乎无法提出的更优雅的解决方案。

迪卡卡(Divakar)

使用NumPy broadcasting-

(y[:,None]*x[...,None]).reshape(x.shape[0],-1)

解释

作为输入,我们有-

y : 10 x 2
x : 10 x 3

使用y[:,None],我们在现有的两个暗角之间引入了一个新轴,从而创建了3D阵列版本。这样将第一个轴保持为第一个轴3D,将第二个轴推出为第三个轴。

使用x[...,None],我们通过将现有的两个暗点作为前两个暗点向上推以产生3D数组版本,从而引入了新的轴作为最后一个

总而言之,通过引入新的轴,我们可以-

y : 10 x 1 x 2
x : 10 x 3 x 1

与在一起y[:,None]*x[...,None]broadcasting对于y将存在x,从而导致输出数组的形状为(10,3,2)为了获得shape的最终输出数组(10,6),我们只需要将最后两个轴与该整形合并即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

减去每一行的第一个元素中的2D阵列

来自分类Dev

在每一行和每一列中创建一个具有唯一字符的 2D 字符表

来自分类Dev

获得2D阵列的一列的计数

来自分类Dev

计算C中2D数组中每一列的均值

来自分类Dev

将一个 df 中的每一列除以 Python 中另一个 df 中的每一列

来自分类Dev

Python / Numpy-矩阵将2D数组与另一个2D数组的每一行相乘

来自分类Dev

在3d阵列中找到与另一个3d阵列中的2d元素相似的2d元素

来自分类Dev

Java:将一个值添加到2D数组中的一列

来自分类Dev

将项目从一个 2D 列表单元格移动到同一列表中的另一个特定单元格

来自分类Dev

C#:如何比较2D阵列中每一行的总和?

来自分类Dev

如何有效地将一个Pandas数据框的每一列与另一数据框的每一列相乘?

来自分类Dev

一个如何将1D阵列复制到另一1D阵列和2D阵列?

来自分类Dev

将锯齿状2D阵列中的元素合并为一个新的锯齿状2D阵列(深度复制问题)

来自分类Dev

将多个阵列合并为一个2D阵列

来自分类Dev

在2D阵列中相乘

来自分类Dev

这些2D阵列包含结构不同的相同信息。如何将一个转换为另一个?

来自分类Dev

如何将矩阵中每一列的伪逆(来自 SVD)乘以 Python 中的另一个向量

来自分类Dev

将数据框的每一列除以另一个数据框的所有列

来自分类Dev

从另一数据框的一列中的另一个单词列表中删除数据框的一列中的每一行中的单词

来自分类Dev

VBA:如何创建一个新数组,显示另一个数组中每一列的计算平均值?

来自分类Dev

将2D数组存储在另一个数组中-Java

来自分类Dev

将1xn Eigen :: Array与2xn Eigen :: Array相乘,而1xn数组中的每一列都表现得像一个标量

来自分类Dev

删除2D阵列中的一行

来自分类Dev

从另一个数组的每第5个元素创建2D数组

来自分类Dev

在numpy 2d阵列的每一行中将它们之间放置的快速方法

来自分类Dev

将列从一个2D数组添加到另一个2D数组

来自分类Dev

从每一行的另一列中减去一列的内容

来自分类Dev

从r中的一个特定列中减去每一列的函数

来自分类Dev

检查2d数组每一行中不同列索引的2d数组值

Related 相关文章

  1. 1

    减去每一行的第一个元素中的2D阵列

  2. 2

    在每一行和每一列中创建一个具有唯一字符的 2D 字符表

  3. 3

    获得2D阵列的一列的计数

  4. 4

    计算C中2D数组中每一列的均值

  5. 5

    将一个 df 中的每一列除以 Python 中另一个 df 中的每一列

  6. 6

    Python / Numpy-矩阵将2D数组与另一个2D数组的每一行相乘

  7. 7

    在3d阵列中找到与另一个3d阵列中的2d元素相似的2d元素

  8. 8

    Java:将一个值添加到2D数组中的一列

  9. 9

    将项目从一个 2D 列表单元格移动到同一列表中的另一个特定单元格

  10. 10

    C#:如何比较2D阵列中每一行的总和?

  11. 11

    如何有效地将一个Pandas数据框的每一列与另一数据框的每一列相乘?

  12. 12

    一个如何将1D阵列复制到另一1D阵列和2D阵列?

  13. 13

    将锯齿状2D阵列中的元素合并为一个新的锯齿状2D阵列(深度复制问题)

  14. 14

    将多个阵列合并为一个2D阵列

  15. 15

    在2D阵列中相乘

  16. 16

    这些2D阵列包含结构不同的相同信息。如何将一个转换为另一个?

  17. 17

    如何将矩阵中每一列的伪逆(来自 SVD)乘以 Python 中的另一个向量

  18. 18

    将数据框的每一列除以另一个数据框的所有列

  19. 19

    从另一数据框的一列中的另一个单词列表中删除数据框的一列中的每一行中的单词

  20. 20

    VBA:如何创建一个新数组,显示另一个数组中每一列的计算平均值?

  21. 21

    将2D数组存储在另一个数组中-Java

  22. 22

    将1xn Eigen :: Array与2xn Eigen :: Array相乘,而1xn数组中的每一列都表现得像一个标量

  23. 23

    删除2D阵列中的一行

  24. 24

    从另一个数组的每第5个元素创建2D数组

  25. 25

    在numpy 2d阵列的每一行中将它们之间放置的快速方法

  26. 26

    将列从一个2D数组添加到另一个2D数组

  27. 27

    从每一行的另一列中减去一列的内容

  28. 28

    从r中的一个特定列中减去每一列的函数

  29. 29

    检查2d数组每一行中不同列索引的2d数组值

热门标签

归档