我有一个像这样的ndarray:
number_of_rows = 3
number_of_columns = 3
a = np.arange(number_of_rows*number_of_columns).reshape(number_of_rows,number_of_columns)
a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
但我想要这样的东西:
array([[0, 100, 101],
[3, 102, 103],
[6, 7, 8]])
为此,我想避免一一进行,我更喜欢在数组或矩阵中进行,因为稍后我想扩展代码。不,我已经更改了初始矩阵的子矩阵(在数学术语中,就本示例 ndarray 而言)。在示例中,考虑的列是 [1,2] 和行 [0,1]。
columns_to_keep = [1,2]
rows_to_keep = [0,1]
我的第一次尝试是:
a[rows_to_keep,:][:,columns_to_keep] = np.asarray([[100,101],[102,103]])
但是这不会修改初始的 a,我没有任何错误,所以 a=
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
所以我实现了一段代码来完成这项工作:
b = [[100, 101],[102, 103]]
for i in range(len(rows_to_keep)):
a[i,columns_to_keep] = b[i]
艾尔认为前面的几行可以完成这项工作,我想知道如何以更快的方式进行切片。也可以通过以下方式:
columns_to_keep = [0,2]
rows_to_keep = [0,2]
所需的输出是
array([[100, 1, 101],
[3, 4, 5],
[102, 7, 103]]).
非常感谢!