首页 文章

用零矢量填充空列表使用numpy

提问于
浏览
0

所以这就是事情 . 我有一个列表列表,一些列表是空的...但如果它不是空的..所有列表都是固定长度..我不知道的长度..例如

for feature in features:
     print len(feature)

这将打印0或长度k .

我正在尝试编写一个函数

def generate_matrix(features):
     # return matrix

返回一个numpy矩阵..空行替换为零向量 . 有没有办法有效地做到这一点?我的意思是......我不想循环通过找到矩阵的形状,然后再循环通过生成行(使用np.array(feature)或np.zeros(shape)..

1 回答

  • 2

    编辑:我没有意识到所有非空功能都是相同的长度 . 如果是这种情况,那么您可以使用第一个非零值的长度 . 我添加了一个功能 .

    f0 = [0,1,2]
    f1 = []
    f2 = [4,5,6]
    
    features = [f0, f1, f2]
    
    def get_nonempty_len(features):
        """
        returns the length of the first non-empty element
            of features.     
        """
        for f in features:
            if len(f) > 0:
                return len(f)
        return 0
    
    def generate_matrix(features):
        rows = len(features)
        cols = get_nonempty_len(features)
        m = np.zeros((rows, cols))
        for i, f in enumerate(features):
            m[i,:len(f)]=f
        return m
    
    print(generate_matrix(features))
    

    输出如下:

    [[ 0.  1.  2.]
     [ 0.  0.  0.]
     [ 4.  5.  6.]]
    

相关问题