我是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)