簡體   English   中英

如何比較 python 中的兩個 arrays?

[英]How do I compare two arrays in python?

假設我有兩個 arrays

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])

我想比較兩個 arrays 並存儲更大的值。 我想編寫一個代碼來檢查 array1 的第一個元素和 array2 的第一個元素,並將它們之間的最大值存儲在一個新的數組中,依此類推。

我用這段代碼試過了

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

但是,代碼沒有給出任何 output 並繼續運行。 我要使用的兩個數組非常大,所以正常的循環方法也適用於大 arrays 嗎?

如果您使用的是 numpy,則最好一直使用 numpy。 與迭代方法相比,它會更快,並且使用更少的 memory(並且更具可讀性)。

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

你的循環是無限的,因為你的i永遠不會改變。 如果您解決了這個問題(通過添加i += 1或通過使用for i in range(0, len(array1)): ),您將只附加array1較大的元素,並忽略它們所在的任何對相等,或者array2一個更大的else: :。

您可能正在尋找類似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])

有幾件事:

首先,它繼續運行的原因是您沒有增加迭代器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

這應該工作!

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)

在此處輸入圖像描述

想通過列表理解來做到這一點。 假設 arrays 的大小始終相同,這將起作用。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM