Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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_Arrays_Numpy_Matrix - Fatal编程技术网

在python中使用numpy时,如何获取具有最多给定元素的二维矩阵(列表)中列和行的索引

在python中使用numpy时,如何获取具有最多给定元素的二维矩阵(列表)中列和行的索引,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,例如,我有一个二维矩阵: [0 0 0 0 5 0 0 0 0 5 0 0 5 0 0 0 0 0 5 5 5 5 5 0 5 0 0 0 5 0 0 5 0 5 0 0 0 0 5 0] 我想得到行和列的索引,它们的长度最长。应该是第三行第五列。我不想使用for循环来获得它,因为它花费了太多的时间;用python中的numpy模块解决这个问题吗?这里有一种方法a是数组,elem是要检查的元素: In [71]: a Out[71]: array([[0, 0, 5, 0,

例如,我有一个二维矩阵:

[0 0 0 0 5 0 0 0

 0 5 0 0 5 0 0 0

 0 0 5 5 5 5 5 0

 5 0 0 0 5 0 0 5

 0 5 0 0 0 0 5 0]

我想得到行和列的索引,它们的长度最长。应该是第三行第五列。我不想使用for循环来获得它,因为它花费了太多的时间;用python中的numpy模块解决这个问题吗?

这里有一种方法
a
是数组,
elem
是要检查的元素:

In [71]: a
Out[71]: 
array([[0, 0, 5, 0, 5, 0, 0, 0],
       [0, 5, 0, 0, 0, 5, 0, 5],
       [0, 0, 5, 0, 5, 0, 5, 0],
       [0, 5, 0, 0, 0, 5, 0, 5],
       [0, 0, 0, 0, 0, 5, 0, 0]])

In [72]: elem = 5
这将给出出现次数最多的
元素的(第一)列:

In [73]: (a == elem).sum(axis=0).argmax()
Out[73]: 5
In [74]: (a == elem).sum(axis=1).argmax()
Out[74]: 1
这将给出出现次数最多的
元素的(第一)行:

In [73]: (a == elem).sum(axis=0).argmax()
Out[73]: 5
In [74]: (a == elem).sum(axis=1).argmax()
Out[74]: 1

这里有一条路
a
是数组,
elem
是要检查的元素:

In [71]: a
Out[71]: 
array([[0, 0, 5, 0, 5, 0, 0, 0],
       [0, 5, 0, 0, 0, 5, 0, 5],
       [0, 0, 5, 0, 5, 0, 5, 0],
       [0, 5, 0, 0, 0, 5, 0, 5],
       [0, 0, 0, 0, 0, 5, 0, 0]])

In [72]: elem = 5
这将给出出现次数最多的
元素的(第一)列:

In [73]: (a == elem).sum(axis=0).argmax()
Out[73]: 5
In [74]: (a == elem).sum(axis=1).argmax()
Out[74]: 1
这将给出出现次数最多的
元素的(第一)行:

In [73]: (a == elem).sum(axis=0).argmax()
Out[73]: 5
In [74]: (a == elem).sum(axis=1).argmax()
Out[74]: 1
数字从0开始


数字从0开始

谢谢您的帮助@GeorgeSha很高兴听到:)基本上,我在这里使用
列表理解
来计算每行/每列出现
5
的次数
list(a[x,:]).count(5)
这里将
numpy.array
转换为
list
,并使用python内置函数
count()
。最后,我使用
np.argmax
查找列表中最大值的索引,这很有帮助@GeorgeSha很高兴听到:)基本上,我在这里使用
列表理解
来计算每行/每列出现
5
的次数
list(a[x,:]).count(5)
这里将
numpy.array
转换为
list
,并使用python内置函数
count()
。最后,我使用
np.argmax
查找列表中最大值的索引。谢谢,事实上,这种方法更快