提问人:Datta 提问时间:11/14/2023 最后编辑:Datta 更新时间:11/14/2023 访问量:50
如何过滤 3D numpy 数组中的多个值
How to filter for multiple values in 3D numpy array
问:
我需要过滤包含脑图像强度值和归一化值、图层标签和分割标签 [大脑区域] 的数据集。例如,如果区域的唯一值为 0、1、2、3、4、5 和 6,则我想删除包含 2 和 4 的行。
我无法显示原始数据集,所以我生成了简化版本以使其清晰[第一列和第二列是图像值,第三列是大脑区域:
import numpy as np
from numpy.random import default_rng
array = np.linspace(0, 6, num = 128)
ls = []
for i in array:
arr = np.round(i)
ls.append(arr)
array = np.asanyarray(ls)
array1 = default_rng(42).random((1, 128, 2))
array = array[None, :, None]
arr = np.concatenate((array1, array), axis=2)
# Output example:
array([[[0.77395605, 0.43887844, 0. ],
[0.85859792, 0.69736803, 0. ],
[0.09417735, 0.97562235, 0. ],
[0.7611397 , 0.78606431, 0. ],
[0.12811363, 0.45038594, 0. ],
[0.37079802, 0.92676499, 0. ],
[0.64386512, 0.82276161, 0. ],
[0.4434142 , 0.22723872, 0. ],
[0.55458479, 0.06381726, 0. ],
[0.82763117, 0.6316644 , 0. ],
[0.75808774, 0.35452597, 0. ],
[0.97069802, 0.89312112, 1. ],
[0.7783835 , 0.19463871, 1. ],
[0.466721 , 0.04380377, 1. ],
[0.15428949, 0.68304895, 1. ],
[0.74476216, 0.96750973, 1. ],
[0.32582536, 0.37045971, 1. ],
[0.46955581, 0.18947136, 1. ],
[0.12992151, 0.47570493, 1. ],
[0.22690935, 0.66981399, 1. ],
我尝试通过使用 AND 运算符组合多个条件来过滤数据,但这不是我想要的,因为将来会有更多的区域需要排除。
# constant
profile_length = 128
# filtering
# make array without region 2 and 4
condition = arr[np.where((arr[:, :, 2] != 2) & (arr[:, :, 2] != 4))]
一般来说,我需要一些不需要为进一步条件进行剖析的东西。有什么解决办法吗?
答: 暂无答案
上一个:使用 JS 过滤后对齐卡片
下一个:如何确定是否筛选了多个列
评论
np.where(arr[:, :, 2] not in filter_list)
filter_list