gpt4 book ai didi

python - 如何查找 3d numpy 数组每列中连续 1 的组数

转载 作者:行者123 更新时间:2023-11-30 22:00:50 24 4
gpt4 key购买 nike

例如,我有这个:

 [[[1 0 1 0 1 0]
[1 1 0 0 1 0]
[0 1 1 0 1 0]
[0 0 0 0 1 0]
[1 0 1 0 1 0]
[1 0 0 0 0 0]]

[[1 0 1 0 1 0]
[1 1 0 0 1 0]
[0 1 1 1 1 0]
[0 0 0 1 0 0]
[1 0 1 1 1 0]
[1 1 0 0 1 0]]]

我想要:

 [[[2 1 3 0 1 0]        
[[2 2 3 1 2 0]]

当然这是一个减少,我的numpy数组形状是(124,7650,18)。我知道有一个简单的方法,但我找不到它。

最佳答案

我们可以使用np.diff来获取给定轴上先前值之间的差异:

import numpy as np
np.diff(x, axis = 1)
array([[[ 0, 1, -1, 0, 0, 0],
[-1, 0, 1, 0, 0, 0],
[ 0, -1, -1, 0, 0, 0],
[ 1, 0, 1, 0, 0, 0],
[ 0, 0, -1, 0, -1, 0]],

[[ 0, 1, -1, 0, 0, 0],
[-1, 0, 1, 1, 0, 0],
[ 0, -1, -1, 0, -1, 0],
[ 1, 0, 1, 0, 1, 0],
[ 0, 1, -1, -1, 0, 0]]])

然后我们要对每次“切换”到 1 的时间进行计数:因此差异为 1。

np.sum(np.diff(x, axis = 1) == 1, axis = 1)
array([[1, 1, 2, 0, 0, 0],
[1, 2, 2, 1, 1, 0]])

但是,这样做我们会错过那些以 1 开头的列,因此我们可以将它们添加回来,为您提供答案:

np.sum(np.diff(x, axis = 1) == 1, axis = 1) + x[:,0,:]
array([[2, 1, 3, 0, 1, 0],
[2, 2, 3, 1, 2, 0]])

关于python - 如何查找 3d numpy 数组每列中连续 1 的组数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54222934/

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