【发布时间】: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