【问题标题】:If function using future arrays如果函数使用未来数组
【发布时间】:2020-04-06 19:01:42
【问题描述】:

我有一个包含多个数组的 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))

【问题讨论】:

    标签: python arrays numpy if-statement boolean


    【解决方案1】:

    由于您的数据仅包含10,您可以只使用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]
    

    【讨论】:

    • 我没有让它运行。我无法在数组中创建数组的 np.sum
    • @Bleistift 好吧,我假设您有 一个 形状为 (40, 256, 1) 的数组。如果您有 40 个形状为 (256, 1) 的数组,那么您可以事先使用 bool_window = np.stack(bool_window)
    • 我认为这可行。你如何在真/假陈述中添加更多内容?所以只有第一个是真的,就像我上面使用的函数一样? has_more_once = (n_ones[1:] > n_ones[:-1]) and (n_ones[1:] != 0) and (n_ones[1:]
    • 找到了 np.logical_and()。感谢您的帮助!
    猜你喜欢
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 2021-10-16
    相关资源
    最近更新 更多