Trim 一个数组相对于另一个带有 numpy 的数组

Trim an array with respective to another array with numpy

我正在处理一组由二维探测器记录的数据。因此,数据由三个数组表示:xy 标记像素坐标,intensity 存储测量信号。

比如一个6x6的格子会给出一组数据:

xraw = np.array([0,1,2,3,4,5,0,1,2,3,4,5,...])
yraw = np.array([0,0,0,0,0,0,1,1,1,1,1,1,...])
intensity = np.array([i_00,i_01,i_02,i_03,i_04,i_05,i_10,i_11,...])

由于像素缺陷等各种原因,原始数据中部分数据点被丢弃。因此,xraw, yraw, intensity 的大小小于 36(如果这是一个 6x6 网格),例如,缺少 (2,3) 处的点。

强度数据需要通过与另一个数组的逐元素乘法进一步处理。该处理数组来自理论计算,因此它的大小为 nxn(在本例中为 6x6)。但是,由于真实数据中的一些点缺失,所以两个数组的大小不同。

我可以使用循环来检查缺失点并消除处理数组中的相应元素。我想知道 numpy 中是否有一些方法可以处理此类操作。谢谢

首先,通过

构建可用和所有可能像素位置的索引
avail_ind = yraw * h + xraw
all_ind = np.arange(0, h * w)

其中 hw 是图像的高度和宽度(以像素为单位)。

然后,通过

找到缺失像素的索引
missing_ind = all_ind[~np.in1d(all_ind, avail_ind)]

一旦缺少索引,使用 np.delete 构建 treatment_array 的副本,删除索引处的元素,然后简单地将其与 intensity 数组相乘。

result = intensity * np.delete(treatment_array, missing_ind)