Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy中二元矩阵的有效操作_Python_Matrix_Numpy - Fatal编程技术网

Python 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(),它将返回给定行的列

对于二进制矩阵,我的意思是矩阵中的每个元素都是0或1,我使用numpy中的
矩阵
类来实现这一点

首先,在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)