【问题标题】:Copy every 2nd matrix element in Python [duplicate]复制Python中的每个第二个矩阵元素[重复]
【发布时间】:2021-02-15 01:00:22
【问题描述】:

我想在 Python 中复制每个第二个矩阵元素。

例如:

arr1 = [[1, 2, 3, 4, 5], 
        [6, 7, 8, 9, 10], 
        [11, 12, 13, 14, 15]]

所需的数组应该是:

       [2, 4]
       [7, 9]
       [12, 14]

最简单的方法是什么?

【问题讨论】:

  • 这甚至不是有效的 Python 代码,也不是有效的输出。你能生产出更精确的东西吗?另外,您尝试了什么?
  • 你必须搜索一下,但答案通常在谷歌搜索之外。
  • 是你的arr1list还是numpy.array

标签: python arrays numpy


【解决方案1】:

只需对列进行切片:

arr1_sliced = arr1[:,1::2]
# if arr1 is a python list, use 
arr1_sliced = np.array(arr1)[:,1::2]

print(arr1_sliced)

# [[ 2  4]
#  [ 7  9]
#  [12 14]]

【讨论】:

  • 切片中的逗号是什么技巧?从未见过这种语法
  • @go2nirvana 不是套路,是numpy slicing syntax,别指望在纯python代码中使用这个。这个答案隐含假设 arr1 已经是一个 numpy 数组。
【解决方案2】:
arr1 = [[1, 2, 3, 4, 5],
       [6, 7, 8, 9, 10],
       [11, 12, 13, 14, 15]]

[a[1::2] for a in arr1]

你有一个列表列表,而不是一个数组。无论如何,i) 列表理解来查看列表列表中的每个列表。 ii) 1::2 中的 2 的步幅为 2,即每隔一个元素。 iii)1::2 中的 1 表示我们从第二个(即基于 0 的索引中的 1)元素开始,它看起来是你想要的

【讨论】:

    【解决方案3】:

    arr1 从我的角度来看只是一个语法错误。如果你的意思是

    arr1 = [[1, 2, 3, 4, 5],
           [6, 7, 8, 9, 10],
           [11, 12, 13, 14, 15]]
    

    解决方案可能是:

    arr2 = [element[1::2] for element in arr1]
    

    arr2 打印出来:

    >>> arr2
    [[2, 4], [7, 9], [12, 14]]
    >>> 
    

    【讨论】:

      【解决方案4】:

      如果你想使用 NumPy 函数,你可以使用相关的过滤器,例如:

      import numpy as np
      filter_arr = []
      
      # go through each element in arr
      for element in arr:
        # if the element is completely divisble by 2, set the value to True, otherwise False
        if element % 2 == 0:
          filter_arr.append(True)
        else:
          filter_arr.append(False)
      

      然后对您的数据应用过滤器:

      arr = np.array([1, 2, 3, 4, 5, 6, 7])
      newarr = arr[filter_arr] 
      print(filter_arr)
      print(newarr)
      

      这个例子取自here

      【讨论】:

        猜你喜欢
        • 2017-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        相关资源
        最近更新 更多