【问题标题】:Subtracting first element of each row in a 2D array减去二维数组中每一行的第一个元素
【发布时间】:2020-02-24 20:10:40
【问题描述】:

我正在使用 Python。我有一个数组(下)

array([[20.28466797, 19.24307251, 20.87997437, ..., 20.38343811,
    19.70025635, 20.22036743],
   [ 4.21954346, 17.05456543, 10.09838867, ..., 19.50102234,
    19.62188721, 18.30804443],
   [14.44546509, 19.43798828, 19.45491028, ..., 22.08952332,
    17.83691406, 17.86752319])

我正在寻找编写一个代码,该代码将获取每行的第一个元素,并从中减去该行中的每个值。

例如,第 1 行:20.28466797 - 20.28466797、19.24307251- 20.28466797、20.87997437 - 20.28466797 等。 第 2 行:4.21954346 -4.21954346、17.05456543 - 4.21954346 等

【问题讨论】:

    标签: python arrays multidimensional-array


    【解决方案1】:

    您可以使用numpy.tile 重复每行的第一个元素以创建矩阵并从原始矩阵中减去它。

    your_matrix - np.tile(your_matrix[:,:1], your_matrix.shape[0])
    

    【讨论】:

      【解决方案2】:

      以下内容将为您完成这项工作:

      import numpy as np
      
      def array_fun(arr):
          # compute the length of the given array
          n = len(arr)
          m = len(arr[0])
      
          # create an empty list
          aList = []
      
          # append by substracting the first element
          [aList.append(arr[i][j]-arr[i][0]) for i in range(n) for j in range(m)]
      
          # return modified array
          return np.array(aList).reshape(n,m)
      
      if __name__ == "__main__":
          # define your array
          arr = [[1, 3, 7], [1, 1, 2], [5, 2, 2]]
      
          # print initial array
          print(np.array(arr))
      
          # print modified array
          print(np.array(array_fun(arr)))
      

      初始数组:

      [[1 3 7]
       [1 1 2]
       [5 2 2]]
      

      最终数组:

      [[ 0  2  6]
       [ 0  0  1]
       [ 0 -3 -3]]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-31
        • 2018-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-04
        • 1970-01-01
        相关资源
        最近更新 更多