【问题标题】:Accessing every second row in matrix and save it to a new matrix, Python访问矩阵中的每一行并将其保存到一个新的矩阵,Python
【发布时间】:2016-01-23 11:18:15
【问题描述】:

我是 python 新手,正在努力解决以下问题。

我有一个矩阵 (6x2),我想每隔一行保存一个新矩阵 (3x2)。

M = numpy.array([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]])
SM = []
for i in M(0,len(M),2):
  append.SM(i)

这可能吗?还是我必须先拆分每一列? SM 应该是这样的:

SM = [[3,4],[7,8],[11,12]]

到目前为止,我只发现了如何使用单列向量来做到这一点,这并没有帮助,因为我根本不习惯 Python。 提前感谢您的帮助。

【问题讨论】:

    标签: python numpy matrix


    【解决方案1】:

    你可以使用切片:

    res = M[1::2,:]
    
    print(res) 
    array([[ 3,  4],
           [ 7,  8],
           [11, 12]])
    

    第一个切片 1::2 表示从位置 1 开始,直到步骤 2 结束。第二个切片 : 选择该级别中的所有元素,即行。

    如果最后需要列表,可以使用tolist 方法将res 转换为列表:

    print(res.tolist())
    [[3, 4], [7, 8], [11, 12]]
    

    您可以在docs 中找到有关切片的更多信息

    或者正如@lambo477 在评论中建议的那样,您可以使用:

    M[1::2]
    

    这将给出相同的结果

    【讨论】:

    • 请注意,您可以只使用M[1::2]
    猜你喜欢
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多