假设我有一个多维索引数组,如何从这些数组创建一个布尔数组?对于1D情况,它看起来像这样:
a = [1,5,6]
b = somefunction(total_array_length=10, a)
>>> [False, True, False, False, False, True, True, False, False, False]
对于二维情况,它将如下所示:
^{pr2}$我想用这个为数组创建一个掩码。我有一个维数为8的多维数组,对于最后一个轴,我可以找到我想要保留的元素的索引。换句话说,我有一个8D数组,其中最后一个轴包含我想保留在原始数组中的所有索引。有人知道怎么做吗?在
在上面的函数中,total_array_length
将等于原始数组的长度。在
那么对于一个shape数组(23,5,76,32,1,3,8,9)和shape(23,5,76,32,1,3,8,4)的索引数组,我该怎么做呢?注4<;9,但除此之外,其尺寸相同。在
a.shape = (23,5,76,32,1,3,8,4)
b = somefunction(total_array_length=9, a)
b.shape =(23,5,76,32,1,3,8,9)
对于第一种情况:
同样简单,也可能同样快速的列表版本:
^{pr2}$对于列表列表,只需嵌套列表理解:
第二种情况下的阵列版本是:
但是,只有当
a
的子列表的长度都相同时,这才有效。如果他们有分歧,我想我们得用一个扁平化的版本。实际上,将2d转换为原来的1d对于参差不齐的
a
,列表版本仍然很简单:但数组版本则更复杂一些:
为行和列构造两个索引数组:
获取等效的raveled(1d)索引:
通过
flat
将其应用于二维数组:相关问题 更多 >
编程相关推荐