numpy - 将数组的掩码选择与原始数组合并
问题描述
我目前正面临分配问题。
所以我有一个包含 400 个二维点的数组。所以一个形状为 400 X 2 的数组。然后我有一个掩码,可以选择我想计算一些变化的 m 个点(行)。根据分配,我应该将要更改的点存储在形状为 m X 2 的数组中。
然后我对这个结果数组进行更改。但是现在在更改之后,我想将这些新的计算值插入到原始数组中的原始索引处。我只是不知道该怎么做。
所以我基本上有:
- 原版 (400 X 2)
- 掩码(400 X 1)(选择要编辑的行的布尔掩码)
- change (m X 2) (只是我要添加的更改)
- 改变 (m X 2) (原始值 + 改变(应用因子)加在一起
如何使用掩码转换我的更改或更改的数组,以便我可以将更改添加/插入到我的原始数组中?
解决方案
看这个有 4 行的例子。原理是从orig中“提取”出来的mask也可以将子数组返回到原来的地方。
import numpy as np
x = np.array([[1,2],[3,4],[5,6],[7,8]])
print(x)
mask_ix = np.array([True,False, True, False])
masked = x[mask_ix,:]
masked = masked * 10 # the change
print(masked)
x[mask_ix] = masked # return to the original x in the mask_ix mask
print(x)
x =[[1 2]
[3 4]
[5 6]
[7 8]]
masked = [[10 20]
[50 60]]
x = [[10 20]
[ 3 4]
[50 60]
[ 7 8]]