将3d阵列中的所有运算与所有运算结合在一起的Numpy阵列

问题描述

我对numpy很陌生。我有一个像这样的数组,并想对其进行一些操作。 在2d数组中很容易,有很多示例,但在3d数组中没有。

arr = np.array([[[ True,True,False,True],[False,False],False]],[[False,[True,True] ],False] ] ])

如果在内部数组中应用np.all之后,结果将是: [[False,False]]

np之后,任何结果将是: [False,True]

我的意思是获取所有所有1d数组值均为true的数组的整体索引。就像在我的某些情况下,它应该返回索引的第一和第二,因为在第一个索引处,数组的子第一个索引和子第四个索引的所有值均为true,而在第二个索引的子第二个索引的所有数组值都为true,而在第零个索引中则不是所有值均为true的单个数组。

到目前为止我所做的是

np.all(np.any(arr,axis=1),axis=1)
             OR
np.any(np.all(arr,axis=1)

但是两者都不尽如人意,是的,我可以通过理解来解决,但是不希望任何类型的循环成为我的最后选择。

解决方法

我认为问题出在轴处理中。

根据经验,您可以认为最里面的括号包含最大维度的数据。

在您的示例中,如果您在解释器中键入arr.shape,它将返回以下元组(3,5,4),它们表示每个维度中arr的大小。如果您现在对问题中提到的第一个操作的预期结果执行相同的操作,您将得到(3,5),因此,您似乎(要说)想投影最大维度的数据(即axis=2)到另一个轴。除了最大尺寸现在为axis=1之外,下一个操作也是如此。

最后,以下行将完成np.any(np.all(arr,axis=2),axis=1)的工作。