我有一个二维的numpy数组('matrix')。我想分配此2D数组的几列('column_idx')和几行('line_idx')。 例子:
'\n'
解决方案:
import numpy as np
matrix = np.ones((10, 20))*np.nan
new_values = np.array([[4, 5, 6, 8, 9], [17, 18, 19, 20, 21], [0, 1, 2, 3, 4]])
line_idx = [0, 3, 6]
column_idx = [10, 11, 12, 13, 14]
不起作用,因为它创建了一个新的临时数组(see doc)。
我找到了两种解决方案:
matrix[line_idx, :][:, column_idx] = new_values
或
matrix[np.repeat(line_idx, (len(column_idx))), np.tile(column_idx, (len(line_idx)))] = new_values.flatten()
是否有更好(或更简单)的解决方案? (奇怪的是,循环解决方案的速度要快1.5倍!)