【问题标题】:How do I compare two arrays in python?如何比较python中的两个数组?
【发布时间】:2021-08-15 06:17:56
【问题描述】:

假设我有两个数组

array1=np.array([1,2,3,4,5,6,7,8,9,10])
array2=np.array([11,1,2,4,10,60,0,3,20,33])

我想比较两个数组并存储更大的值。我想编写一个代码,检查array1的第一个元素和array2的第一个元素,并将它们之间的最大值存储在一个新数组中,依此类推。

我用这段代码试过了

array3=[]
i=0
while i<=len(array1):
    if array1[i]>array2[i]:
        array3.append(i)

但是,代码没有给出任何输出并继续运行。我想使用的两个数组都很大,所以普通的循环方法也适用于大数组吗?

【问题讨论】:

    标签: python arrays python-3.x loops


    【解决方案1】:

    如果您使用的是 numpy,则最好始终使用 numpy。与迭代方法相比,它会更快,使用更少的内存(而且可读性也更强)。

    np.max([array1, array2], axis=0)
    

    您的循环是无限的,因为您的 i 永远不会改变。如果您解决了这个问题(通过添加i += 1 或使用for i in range(0, len(array1)):),您将只附加array1 较大的元素,并忽略它们相等的任何对或array2 一个更大:需要else:

    【讨论】:

      【解决方案2】:

      您可能正在寻找类似numpy.maximum:

      import numpy as np
      
      array1 = np.array([ 1, 2, 3, 4,  5,  6, 7, 8, 9,  10])
      array2 = np.array([11, 1, 2, 4, 10, 60, 0, 3, 20, 33])
      
      np.maximum(array1, array2)
      # array([11,  2,  3,  4, 10, 60,  7,  8, 20, 33])
      

      【讨论】:

      • 嗯,np.maximum。每天学习新东西。
      【解决方案3】:

      有几点:

      首先,它继续运行的原因是您没有增加迭代器 i

      其次,目前您正在添加更大数字的索引,而不是更大的数字。试试下面的代码(纯python):

      array3 = []
      i = 0
      while i < len(array1):
          if array1[i] > array2[i]:
              array3.append(array1[i])
          else:
              array3.append(array2[i])
          i += 1
      

      【讨论】:

        【解决方案4】:

        这应该可行!

        import numpy as np
        
        array1=np.array([1,2,3,4,5,6,7,8,9,10])
        array2=np.array([11,1,2,4,10,60,0,3,20,33])
        
        array3=[]
        i=0
        while i<len(array1):
            if array1[i]>array2[i]:
                array3.append(array1[i])
            else:
                array3.append(array2[i])
            i += 1
        
        print(array3)
        

        【讨论】:

          【解决方案5】:

          想通过列表理解来做到这一点。假设数组的大小始终相同,这将起作用。

          [max([array1[i],array2[i]]) for i in range(len(array1))]
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-01-18
            • 1970-01-01
            • 2017-11-01
            • 2021-09-04
            • 2011-07-20
            • 2019-12-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多