如何将矩阵变换有效地应用于NumPy数组的每一行?

用户名

假设我有一个2d NumPy ndarray,如下所示:

[[ 0, 1, 2, 3 ],
 [ 4, 5, 6, 7 ],
 [ 8, 9, 10, 11 ]]

从概念上讲,我要做的是:

For each row:
    Transpose the row
    Multiply the transposed row by a transformation matrix
    Transpose the result
    Store the result in the original ndarray, overwriting the original row data

我有一个非常慢的,蛮力的方法,可以在功能上实现这一点:

import numpy as np
transform_matrix = np.matrix( /* 4x4 matrix setup clipped for brevity */ )
for i, row in enumerate( data ):
    tr = row.reshape( ( 4, 1 ) )
    new_row = np.dot( transform_matrix, tr )
    data[i] = new_row.reshape( ( 1, 4 ) )

但是,这似乎是NumPy应该做的那种操作。我认为-作为NumPy的新手,我只是在文档中缺少一些基本知识。有指针吗?

请注意,如果创建新的ndarray而不是就地编辑它更快,那么这也可以满足我的工作;手术速度是最主要的问题。

user2357112支持Monica

您要执行的一系列冗长的操作等效于以下操作:

data[:] = data.dot(transform_matrix.T)

或使用新数组而不是修改原始数组,这应该更快一些:

data.dot(transform_matrix.T)

解释如下:

For each row:
    Transpose the row

等效于转置矩阵,然后遍历各列。

    Multiply the transposed row by a transformation matrix

将矩阵的每一列左乘第二矩阵等效于将整个事物左乘第二矩阵。至此,您所拥有的是transform_matrix.dot(data.T)

    Transpose the result

矩阵转置的基本特性之一transform_matrix.dot(data.T).T是等效于data.dot(transform_matrix.T)

    Store the result in the original ndarray, overwriting the original row data

切片分配执行此操作。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将矩阵变换有效地应用于NumPy数组的每一行?

来自分类Dev

如何有效地将函数逐行应用于NumPy矩阵

来自分类Dev

如何有效地将条件应用于numpy数组的索引?

来自分类Dev

我如何(有效地)将向量添加到Julia中矩阵的每一行?

来自分类Dev

如何有效地将矩阵的每一行与R中列表的每个部分进行比较?

来自分类Dev

如何使用numpy将函数有效地应用于三维数组?

来自分类Dev

如何根据条件有效地将函数应用于数组中的值?

来自分类Dev

将.isin应用于熊猫的每一行的有效方法

来自分类Dev

Python Numpy将旋转矩阵应用于数组中的每一行

来自分类Dev

如何有效地将运算符应用于两个数组的笛卡尔积?

来自分类Dev

在给定转移矩阵的情况下,将转移有效地应用于状态矩阵

来自分类Dev

J:如何有效地将动词应用于后缀的前缀?

来自分类Dev

如何有效地从熊猫数据框中减去每一行?

来自分类Dev

如何有效地将两个变量函数应用于data.frame(或matrix)元素-填充输出矩阵?

来自分类Dev

将 repmat 应用于具有不同输入的 Matlab 中矩阵的每一行

来自分类Dev

如何通过R下的for循环将Wilcoxon测试应用于矩阵的每一行

来自分类Dev

numpy-将聚合应用于数组的每一行

来自分类Dev

将多个函数应用于numpy数组的每一行

来自分类Dev

如何有效地将功能应用于熊猫面板的每个数据框

来自分类Dev

如何有效地将pandas.Timestamp函数应用于整个数据框/列?

来自分类Dev

如何有效地从大型numpy数组中删除一系列行?

来自分类Dev

有效地将阈值函数应用于 SciPy 稀疏 csr_matrix

来自分类Dev

如何在Python中有效地将同一操作应用于多个变量?

来自分类Dev

如何将函数应用于熊猫中每一行的对象属性

来自分类Dev

如何将功能应用于每一行?

来自分类Dev

如何将函数应用于SparkR中的每一行?

来自分类Dev

如何有效地更新许多百万行表中每一行的INT列

来自分类Dev

如何有效地对 numpy 矩阵进行排序

来自分类Dev

如何用R分组有效地将第一行的NA替换为0

Related 相关文章

  1. 1

    如何将矩阵变换有效地应用于NumPy数组的每一行?

  2. 2

    如何有效地将函数逐行应用于NumPy矩阵

  3. 3

    如何有效地将条件应用于numpy数组的索引?

  4. 4

    我如何(有效地)将向量添加到Julia中矩阵的每一行?

  5. 5

    如何有效地将矩阵的每一行与R中列表的每个部分进行比较?

  6. 6

    如何使用numpy将函数有效地应用于三维数组?

  7. 7

    如何根据条件有效地将函数应用于数组中的值?

  8. 8

    将.isin应用于熊猫的每一行的有效方法

  9. 9

    Python Numpy将旋转矩阵应用于数组中的每一行

  10. 10

    如何有效地将运算符应用于两个数组的笛卡尔积?

  11. 11

    在给定转移矩阵的情况下,将转移有效地应用于状态矩阵

  12. 12

    J:如何有效地将动词应用于后缀的前缀?

  13. 13

    如何有效地从熊猫数据框中减去每一行?

  14. 14

    如何有效地将两个变量函数应用于data.frame(或matrix)元素-填充输出矩阵?

  15. 15

    将 repmat 应用于具有不同输入的 Matlab 中矩阵的每一行

  16. 16

    如何通过R下的for循环将Wilcoxon测试应用于矩阵的每一行

  17. 17

    numpy-将聚合应用于数组的每一行

  18. 18

    将多个函数应用于numpy数组的每一行

  19. 19

    如何有效地将功能应用于熊猫面板的每个数据框

  20. 20

    如何有效地将pandas.Timestamp函数应用于整个数据框/列?

  21. 21

    如何有效地从大型numpy数组中删除一系列行?

  22. 22

    有效地将阈值函数应用于 SciPy 稀疏 csr_matrix

  23. 23

    如何在Python中有效地将同一操作应用于多个变量?

  24. 24

    如何将函数应用于熊猫中每一行的对象属性

  25. 25

    如何将功能应用于每一行?

  26. 26

    如何将函数应用于SparkR中的每一行?

  27. 27

    如何有效地更新许多百万行表中每一行的INT列

  28. 28

    如何有效地对 numpy 矩阵进行排序

  29. 29

    如何用R分组有效地将第一行的NA替换为0

热门标签

归档