我试图解决一个“非常简单”的问题。在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之外,没有任何具体的东西与我所面临的问题有关,并且链接中的代码无法工作。在
注意:我知道我可以通过double for循环来实现我所需要的,但是在我的数据上,这样的循环为一次迭代的运行增加了9秒,我正在寻找一种更快的方法来实现这一点。在
任何帮助将不胜感激。在
假设您使用的是
numpy
数组,那么(在B
是标量的情况下),下面的代码应该可以将所选元素赋给B
的值。在itertools.product
将创建所有坐标对,然后我们将其转换为numpy
数组,并用于索引原始数组:我用this excellent answer by unutbu来计算如何编制索引。在
相关问题 更多 >
编程相关推荐