将值分配给多维数组

时间:2020-01-06 10:59:39

标签: python-3.x numpy multidimensional-array

我有一个二维的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倍!)

0 个答案:

没有答案