gpt4 book ai didi

python - 如何获取出现给定数字的 3D 数组中的 2D 切片

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:04 25 4
gpt4 key购买 nike

我有一个 3D 数组,我想用一个给定的值来掩盖它。该值仅出现在该 3D 阵列沿该阵列的 z 方向(轴 0)的一个 2D 切片中,因此沿 z 方向的所有其他切片将为 False。

我怎样才能只提取数字出现的二维数组,以及它出现的二维切片在 z 维度中的位置?

假设我有一个小型 3D 阵列:

import numpy as np
array = np.zeros((3,3,3))
array[2] = np.array([[2,2,0],[2,2,0],[2,2,0]])
print(array==2)

所以用值 2 屏蔽 3d 数组,会给我整个 3d 数组,但我只需要它出现的 2d 切片,在这种情况下,它将是 3d 数组中的第三个切片。

期望的输出:

 [[ True  True False]
[ True True False]
[ True True False]]

slice: 2

我怎样才能做到这一点?

最佳答案

只要您知道条件仅沿您称为 z 方向的轴满足,您就可以使用 numpy.any 的组合.您可以使用 (array==2) 获取 bool 数组以找出满足条件的位置,然后使用 np.any 找到正确的切片。然后您可以使用 np.where 找到切片索引然后提取该索引:

import numpy as np
array = np.zeros((3,3,3))
array[2] = np.array([[2,2,0],[2,2,0],[2,2,0]])
valueToFind = 2
conditionMet = (array==valueToFind)
zIndex = np.where(conditionMet.any(axis=(1, 2)))[0][0]
print(conditionMet[zIndex])
print("slice: {}".format(zIndex))

或者,您可以使用 np.compress提取切片。

np.compress(conditionMet.any(axis=(1, 2)), conditionMet, axis=0)[0]

但是请注意,这不会为您提供 z 索引。因此,如果需要,无论如何都需要使用 np.where

关于python - 如何获取出现给定数字的 3D 数组中的 2D 切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49427866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com