首页 > 解决方案 > 将数组的掩码选择与原始数组合并

问题描述

我目前正面临分配问题。

所以我有一个包含 400 个二维点的数组。所以一个形状为 400 X 2 的数组。然后我有一个掩码,可以选择我想计算一些变化的 m 个点(行)。根据分配,我应该将要更改的点存储在形状为 m X 2 的数组中。

然后我对这个结果数组进行更改。但是现在在更改之后,我想将这些新的计算值插入到原始数组中的原始索引处。我只是不知道该怎么做。

所以我基本上有:

如何使用掩码转换我的更改或更改的数组,以便我可以将更改添加/插入到我的原始数组中?

标签: numpy

解决方案


看这个有 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]]

推荐阅读