数组处理 - Python

kmo*_*pur 8 python arrays

我是Python的初学者.我尝试将两个数组的最大值存储在另一个数组中.数组的长度是已知的,所以我用过c=[]*len(a)

 a=[3,4,6,8]
 b=[9,4,5,10]
 c=[]*len(a)
 for i in range(len(a)):
    if (a[i]>b[i]):
      c.append(a[i])
    else:
      c.append(b[i])
Run Code Online (Sandbox Code Playgroud)

我得到了以下输出,这是正确的.

 c=[9,4,6,10]
Run Code Online (Sandbox Code Playgroud)

如果我有像这样的数组

 a=[[2,4],[6,8]]
 b=[[1,7],[5,9]]
Run Code Online (Sandbox Code Playgroud)

我该如何进行此操作以将每个元素的最大值存储在另一个数组中?提前感谢您的帮助.

Chr*_*ean 10

您可以使用zip()将每个列表和每个子列表压缩在一起,以便按元素进行比较:

创建一个聚合来自每个迭代的元素的迭代器.

返回元组的迭代器,其中第i个元组包含来自每个参数序列或迭代的第i个元素.[...].

>>> def max_value(lst1, lst2):
        for subl1, subl2 in zip(lst1, lst2):
            for el1, el2 in zip(subl1, subl2):
                yield max(el1, el2)


>>> 
>>> a=[[2,4],[6,8]]
>>> b=[[1,7],[5,9]]
>>> 
>>> list(max_value(a, b))
[2, 7, 6, 9]
Run Code Online (Sandbox Code Playgroud)

如果使用NumPy,您可以使用numpy.maximum():

元素最大的数组元素.

比较两个数组并返回一个包含元素最大值的新数组.[...].

>>> import numpy as np
>>> 
>>> a = np.array([[2,4],[6,8]])
>>> b = np.array([[1,7],[5,9]])
>>> 
>>> np.maximum(a, b)
array([[2, 7],
       [6, 9]])
>>> 
Run Code Online (Sandbox Code Playgroud)