首页 > 解决方案 > python numpy矩阵逐行操作:每行中的列

问题描述

如何遍历矩阵并获取每行的列数?如果我有一个矩阵,并且矩阵中的某些元素是 NaN(空),例如:[[4,2,9,4],[3,4,8,6],[5,NaN,7,7] ,[Nan,8,Nan,Nan]],如何计算行长度?

我努力了:

len(matrix) # number of rows
=len(matrix[0]) # number of columns

但这给了我总数。

所以我想得到一个向量,表示每行中的列数:[4,4,3,1] 例如

我的想法是做一个这样的循环:

for i in matrix:

然后是它搜索的循环。但我不知道该怎么做

编辑:我尝试了@wavy 的方法,它奏效了。我可以这样做:

# empty list
Final=[]

for i in range(matrix):
    columns=np.isnan(matrix).sum(axis=1)
    result=-columns+matrix.shape[1]
    if result==1:
        Final.append(matrix[i])
        
        
    print(Final)

I also need to put other conditions, when result==2, and when result>2

标签: pythonnumpymatrixvector

解决方案


这可能比 David Wierichs 的建议更快:

import numpy as np 

x = np.array([[4, 2, 9, 4], [3, 4, 8, 6], [5, np.nan, 7, 7], [np.nan, 8, np.nan, np.nan]])
y = np.isnan(x).sum(axis=1)
result = -y + x.shape[1]

推荐阅读