在Python中将映射应用于多个2d数组

在Python中将映射应用于多个2d数组,python,multidimensional-array,lambda,Python,Multidimensional Array,Lambda,我尝试在Python中使用map()和带有if条件的函数组合两个2d数组 当我省略if语句时,map()会像我所期望的那样工作 这是可行的(但我需要的if条件未得到满足): 并返回: collapsed = [array([5, 7, 6]), array([5, 7, 9]), array([4, 5, 9])] 报告如下: collapsed = [array([5, 7, 6]), array([5, 7, 9]), array([4, 5, 9])] “ValueError:包含多个

我尝试在Python中使用map()和带有if条件的函数组合两个2d数组

当我省略if语句时,map()会像我所期望的那样工作

这是可行的(但我需要的if条件未得到满足):

并返回:

collapsed = [array([5, 7, 6]), array([5, 7, 9]), array([4, 5, 9])]
报告如下:

collapsed = [array([5, 7, 6]), array([5, 7, 9]), array([4, 5, 9])]
“ValueError:包含多个元素的数组的真值不明确。”

我所期望的是:

collapsed = [[1,2,6][1,2,3][4,5,3]]

我想你在找这样的东西:

[[list(map(lambda x,y:  x + y if x == 0 else x, a, b))] for a, b in zip(la, lb)]

看起来您正在添加子列表/数组,而不是整数,因此错误为true,谢谢!您知道如何在不使用for循环的情况下访问数组中的各个元素吗?您能告诉我们2dlist1和2dlist to的外观以及结果输出吗?您是说您使用的是2d数组,但执行的是
x==0
。如果这些是二维数组,则意味着
2dlist1
2dlist2
中的每个元素也是数组。你是在和一个女人比较,谢谢。如何比较这些列表中的单个元素?我的问题是,这些列表非常大,因此我需要一种相对快速的比较方法。谢谢,这在没有一组括号的情况下运行得很好,即
[list(map(lambda x,y:x+y,如果x==0,则x=0,否则x,a,b)],对于zip中的a,b(la,lb)]
。您知道如何使大型阵列的运行速度更快吗?还有其他方法我应该研究吗?@Elias还有一点:你可以在zip(la,lb)中为a,b编写
[list(map(lambda x,y:y,如果x==0,那么x,a,b)]
,因为x+y是y,如果x==0。
[[list(map(lambda x,y:  x + y if x == 0 else x, a, b))] for a, b in zip(la, lb)]