从Numpy的nd-array开始:
>>> arr
[
[
[10, 4, 5, 6, 7],
[11, 1, 2, 3, 4],
[11, 5, 6, 7, 8]
],
[
[12, 4, 5, 6, 7],
[12, 1, 2, 3, 4],
[12, 5, 6, 7, 8]
],
[
[15, 4, 5, 6, 7],
[15, 1, 2, 3, 4],
[15, 5, 6, 7, 8]
],
[
[13, 4, 5, 6, 7],
[13, 1, 2, 3, 4],
[14, 5, 6, 7, 8]
],
[
[10, 4, 5, 6, 7],
[11, 1, 2, 3, 4],
[12, 5, 6, 7, 8]
]
]
我想仅保留在位置0具有唯一值的3个子数组序列,以获得以下结果:
>>> new_arr
[
[
[12, 4, 5, 6, 7],
[12, 1, 2, 3, 4],
[12, 5, 6, 7, 8]
],
[
[15, 4, 5, 6, 7],
[15, 1, 2, 3, 4],
[15, 5, 6, 7, 8]
]
]
从初始数组中,
arr[0]
、arr[3]
和 arr[4]
被丢弃,因为它们在位置 0
上都有不止一个唯一值(分别是 [10, 11]
,[13, 14]
和 [10, 11, 12]
)。
我尝试使用 numpy.unique()
进行调整,但只能得到所有子数组在位置 0
处的全局唯一值,这不是所需的。
-- 编辑
以下似乎让我更接近解决方案:
>>> np.unique(arr[0, :, 0])
array([10, 11])
但我不确定如何在不使用Python循环的情况下,使每个子数组满足一个比这更高一级的条件。
TypeError: list indices must be integers or slices, not tuple
- Michael Stachura