我想索引一个2d数组并获取这个数组的一个子集。 然后我将这个子集指定给另一个与这个子集形状相同的。 但是原来的排列没有改变。你知道吗
下面是一个例子。mat
在赋值操作之后没有改变。你知道吗
我想要的是分配一个subset of ndarray
和另一个ndarray.
import numpy as np
ma = np.array([1,2,3,4,5] * 5).reshape(5,5)
mask = np.array([False, True, False, True, True])
sub = np.array([[100,101, 102],
[103, 104, 105],
[106,107,108]])
ma[mask][:,mask] = sub
print(ma)
我所期望的是:
array([[1, 1, 3, 1, 5],
[1, 100, 1, 101, 102],
[1, 1, 3, 1, 5],
[1, 103, 3, 104, 105],
[1, 106, 3, 107, 108]])
但垫子不变:
array([[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5]])
请执行以下操作:
np.where(mask, 1, ma)
在列中使用mask替换为1np.where(mask, 1, np.where(mask, 1, ma).T)
转置结果并再次重复以屏蔽行np.where(mask, 1, np.where(mask, 1, ma).T).T
调回输出
相关问题 更多 >
编程相关推荐