Python numpy中二元矩阵的有效操作
对于二进制矩阵,我的意思是矩阵中的每个元素都是0或1,我使用numpy中的Python numpy中二元矩阵的有效操作,python,matrix,numpy,Python,Matrix,Numpy,对于二进制矩阵,我的意思是矩阵中的每个元素都是0或1,我使用numpy中的矩阵类来实现这一点 首先,在numpy中是否有特定类型的矩阵,或者我们只是使用一个填充了0和1的矩阵 其次,考虑到矩阵类的维数,创建满0的方阵的最快方法是什么?注意:numpy.zero((dim,dim))不是我想要的,因为它创建了一个浮动为0的二维数组。 第三,我想经常获取和设置矩阵的任何给定行。对于get,我可以考虑使用row=my\u matrix.A[row\u index].tolist(),它将返回给定行的列
矩阵类来实现这一点
首先,在numpy中是否有特定类型的矩阵,或者我们只是使用一个填充了0和1的矩阵
其次,考虑到矩阵
类的维数,创建满0的方阵的最快方法是什么?注意:numpy.zero((dim,dim))
不是我想要的,因为它创建了一个浮动为0的二维数组。
第三,我想经常获取和设置矩阵的任何给定行。对于get,我可以考虑使用row=my\u matrix.A[row\u index].tolist()
,它将返回给定行的列表表示形式。对于set,我似乎可以只做my_矩阵[row_index]=row_list
,而row_list
是一个与给定行长度相同的列表。同样,我想知道它们是否是执行作业的最有效方法。要创建元素可以是0或1的numpy数组,请使用dtype='bool'
参数:
arr = np.zeros((dim,dim), dtype = 'bool')
或者,要将arr
转换为numpy矩阵:
arr = np.matrix(arr)
要访问行,请执行以下操作:
arr[row_num]
并设置一行:
arr[row_num] = new_row
是最快的方法。为什么需要numpy.matrix
而不是numpy.ndarray
?为什么要在检索行时将行转换为列表?@SvenMarnach,我需要一个矩阵,因为它有现成的函数用于矩阵特定的计算。我在检索时将一行转换为一个列表,因为我需要将其序列化为JSON。许多特定于矩阵的操作也可以应用于数组——这就是为什么我被要求这样做的原因。如果您需要将内容序列化为JSON,那么很可能您的瓶颈在别处,您不需要关心从矩阵中检索行的速度。谢谢您的建议。我希望矩阵中的元素是0
或1
,而不是true
或False
。此外,arr[row_num]
将返回一维矩阵对象,而不是数组或列表。True
和False
基本上与0
和1
相同–只需在交互式解释器中尝试以下表达式:0==False
,3*True
@SvenMarnach它们是相同的,但是True
和False
占用8位,就像0
和1
(在Python中)一样。如果有一个numpy数组,其条目是实际的位,那就太好了…@tale上同调arr=np.zeros((dim,dim),dtype=int)