要查找3D numpy数组每列中连续1的组数,可以使用numpy库中的函数来实现。具体步骤如下:
import numpy as np
arr = np.array([[[1, 0, 1], [1, 1, 0], [0, 1, 1]],
[[1, 1, 0], [0, 1, 1], [1, 0, 1]],
[[0, 1, 1], [1, 0, 1], [1, 1, 0]]])
result = np.apply_along_axis(lambda x: np.diff(np.where(np.concatenate(([x[0]], x[:-1] != x[1:], [True])))[0])[::2], axis=0, arr=arr)
解释上述代码:
np.where
函数用于找到数组中满足条件的元素的索引。np.diff
函数用于计算数组中相邻元素的差值。np.concatenate
函数用于将数组连接起来。np.apply_along_axis
函数用于沿着指定的轴应用函数。print(result)
完整代码如下:
import numpy as np
arr = np.array([[[1, 0, 1], [1, 1, 0], [0, 1, 1]],
[[1, 1, 0], [0, 1, 1], [1, 0, 1]],
[[0, 1, 1], [1, 0, 1], [1, 1, 0]]])
result = np.apply_along_axis(lambda x: np.diff(np.where(np.concatenate(([x[0]], x[:-1] != x[1:], [True])))[0])[::2], axis=0, arr=arr)
print(result)
这段代码将输出每列中连续1的组数,结果类似于:
[[2 1 2]
[1 2 1]
[2 1 1]]
这表示第一列有2组连续的1,第二列有1组连续的1,第三列有2组连续的1。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云