【发布时间】:2014-09-03 12:35:30
【问题描述】:
我正在尝试解决一个“非常简单”的问题。在 Python 中不是那么简单。给定一个大矩阵 A 和另一个较小的矩阵 B,我想用 B 替换 A 的某些元素。 在 Matlab 中是这样的:
Given A, row_coord = [1,5,6] col_coord = [2,4], and a matrix B of size(3X2), A[row_coord, col_coord] = B
在 Python 中,我尝试使用 itertools 中的 product(row_coord, col_coord) 来生成需要在 A 中访问的所有索引的集合,但它不起作用。所有关于子矩阵替换的示例都参考了逐块 row_coord = col_coord 示例。除了 http://comments.gmane.org/gmane.comp.python.numeric.general/11912 之外,没有什么具体的东西似乎与我面临的问题有关,并且链接中的代码不起作用。
注意:我知道我可以通过双 for 循环来实现我需要的东西,但是在我的数据上,这样的循环会使一次迭代的运行时间增加 9 秒,我正在寻找一种更快的方法来实现这一点。
任何帮助将不胜感激。
【问题讨论】:
-
您能提供一些示例矩阵和向量吗?它们不必非常大,足以进行测试。
-
是的,当然: A = np.zeros([20,20]) col_coord = [0,1,3] row_coord = [1,2] B = 1 (让我们设置 B 为持续的)。解决问题的简单方法是: for a in row_coord: for b in col_coord: A[row_coord[a],col_coord[b]] = 1 但我想通过某种方式使用 intertools 实用程序使其更快.. . 提前致谢:-(
标签: python performance substitution submatrix