首页 > 解决方案 > 如果函数使用未来数组

问题描述

我有一个 np.array 里面有多个数组。

bool_window[0] = (256,1)

在这种情况下,我有 40 个 (256,1) 数组。数组中的数据是 0 或 1,我想使用此代码检查下一个数组是否比前一个数组多 1。

for i in bool_window:
    if (np.count_nonzero(i) > 0)  and (np.count_nonzero(i) < 256) and np.count_nonzero(i) < np.count_nonzero(i+1):
        print('In this array there are ', np.count_nonzero(i), ' events')

问题是 np.count_nonzero(i+1) 无法正常工作。有没有办法说下一个数组需要比实际数组大?

0 256
0 256
0 256
50 256
178 256
174 256
46 256
0 256
0 256
0 256

这是我使用此代码得到的输出。

for i in bool_window:
   if np.count_nonzero(i) < np.count_nonzero(i+1):
            print(np.count_nonzero(i), np.count_nonzero(i+1))

标签: pythonarraysnumpyif-statementboolean

解决方案


由于您的数据仅包含1并且0您可以使用np.sum

bool_window = np.stack(bool_window)  # In case you have 40 arrays of shape (256, 1).
n_ones = bool_window.sum(axis=(-2, -1))
has_more_ones = n_ones[1:] > n_ones[:-1]

推荐阅读