0

我编写了一个小程序,我目前正在使它在不同的操作系统上工作。我的程序严重依赖于numpy 版本 1.6 引入的函数count_nonzero 。

我的主要工作站是带有 numpy(1.6.2 版)和 scipy(0.11 版)的 Debian Linux。但是在 Windows 上,设置可能涉及低于 1.6 的旧 numpy 版本,其中count_nonzero命令不可用。因此,我需要一个自定义count_nonzero函数,该函数适用于具有较旧 numpy 版本的系统。

def count_nonzero(self,array):

    if hasattr(numpy,'count_nonzero'):
        return numpy.count_nonzero(array)
    elif hasattr(scipy,'count_nonzero'):
        return scipy.count_nonzero(array)
    else:
        # Alternative ?

我怎样才能做到这一点?

4

2 回答 2

1

这应该可以解决问题:

(array != 0).sum()
于 2013-03-30T15:34:00.353 回答
0

啊,好吧,我找到了解决方案,但我愿意接受更聪明的选择:)

numpy.size(array[array!=0])
于 2013-03-30T14:34:52.693 回答