【发布时间】:2021-11-06 14:18:28
【问题描述】:
我有一个问题,我需要将一个矩阵的单行复制到更大矩阵中的多个特定行。例如:
Matrix A:
[row1]
[row2]
[row3]
复制到
Matrix B:
[row3]
[row3]
[row2]
[row2]
[row3]
[row1]
A 中的值在执行过程中可能会发生变化,但行总是以相同的模式复制到 B。 我已经试过了:
B = A[3,3,2,2,3,1]
但这比我将行逐行放置的简单 for 循环还要慢。我需要使用矩阵大小 A ≈ (500, 500) 和 B ≈ (2000, 500) 尽快完成此操作。 有谁知道使用 numpy 矩阵在 python 中执行此操作的更有效方法?
【问题讨论】:
-
据我所知,问题的大小,即矩阵的大小和数据量非常重要。在与您编写的示例一样小的矩阵示例中,我想方法之间不会有显着差异。在SO上比较一些方法可以看出,在执行一段时间后,与方法相关的总执行时间变得比其他方法少;在总执行时间内从最差到最好。在此类问题中,我建议使用诸如 numpy 之类的库,以及更好的 jax。
-
你的意思是,没有使用例如
A.tolist()在@sgs 的答案中使用?从B = A[3,3,2,2,3,1]可以理解,B 中每一行的计数可以变化,即 row3 的计数不等于 row1 的计数(3 != 1)。是真的还是 A 的每一行都以相同的计数复制到 B 中? -
是的,B 中每个不同行的行数可能不同。我的意思是我总是将它们复制到同一个位置,B 的模式在整个执行过程中是一致的。所以 B 中某些行的计数也保持不变。只是 A 中的值发生了变化,我必须一遍又一遍地重复相同的复制过程。
-
嗨@Archaon,如果有任何答案解决了您的问题或有帮助,请通过单击复选标记或投票来考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
标签: python arrays numpy matrix copy