【问题标题】:Boolean matrices with numpy - bitwise operations questions带有 numpy 的布尔矩阵 - 按位运算问题
【发布时间】:2018-06-28 14:44:50
【问题描述】:

我使用 2d numpy 矩阵作为邻接矩阵,用于各种图形表示和遍历。这些是未加权的图,我只需要检查连通性,仅此而已。因此,我用 1 表示边缘,用 0 表示缺少边缘。

我承认以下问题可能取决于许多因素 - 其中大部分超出了我的理解范围。

在 1 和 0(或真假)的两个矩阵之间进行按位运算时使用什么合适的 dtype?

我还有第二个问题——对于这种情况,numpy 是否是正确的选择?我想知道如果你只做按位运算(没有算术),是否有一个我不知道的 python 包比 numpy 更好。

谢谢。

【问题讨论】:

  • 您也许可以使用sys.getsizeof 来比较不同的实现
  • 抱歉,使用dtype=bool有什么问题?它支持开箱即用的按位运算(使用 &、|、~ 或 np.logical_and、np.logical_or、np.logical_not),根据我的经验,它应该处理所有低级问题。编辑:实际上它似乎在内部使用了一个完整的字节(如 np.int8)所以是的,它浪费了 7/8 的空间,可能确实有更好的选择,抱歉。

标签: python arrays numpy matrix bitwise-operators


【解决方案1】:

为什么不使用itemsize 键指定您的项目大小?

来自 NumPy 的文档:

itemsize 键允许设置 dtype 的总大小,并且必须是一个足够大的整数,以便所有字段都在 dtype 内。如果构造的 dtype 是对齐的,则 itemsize 也必须能被结构对齐整除。

(来源:https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.dtypes.html

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多