我有几个多维数组被压缩到一个列表中,并试图根据应用于单个数组的选择标准从列表中删除值。具体来说,我有4个数组,它们都有相同的形状,它们都被压缩到一个数组列表中:
in: array1.shape
out: (5,3)
...
in: array4.shape
out: (5,3)
in: array1
out: ([[0, 1, 1],
[0, 0, 1],
[0, 0, 1],
[0, 1, 1],
[0, 0, 0]])
in: array4
out: ([[20, 16, 20],
[15, 19, 17],
[21, 24, 23],
[22, 22, 26],
[27, 24, 23]])
in: fullarray = zip(array1,...,array4)
in: fullarray[0]
out: (array([0, 1, 1]), array([3, 4, 5]), array([33, 34, 35]), array([20, 16, 20]))
我尝试在每组数组中迭代来自单个目标数组的值,并在值等于20时从与目标数组具有相同索引的每个数组中选择值。我怀疑我解释得很清楚,所以我举个例子。在
^{pr2}$我以前的尝试都生成了各种错误消息(示例如下)。任何帮助都将不胜感激。在
in: for i in g:
for n in i:
if n == 3:
for k in n:
if k == 0:
newlist.append(i[k])
out: for i in fullarray:
2 for n in i:
----> 3 if n == 3:
4 for k in n:
5 if k == 0:
ValueError: The truth value of an array with more than one element is ambiguous.
Use a.any() or a.all()
编辑修改后的问题:
下面是一段代码,它在做你想做的事情。不过,时间复杂性可能会得到改善。在
旧答案:假设所有数组的大小相同,则可以执行以下操作:
^{pr2}$full[idx]
包含一个元组,其中包含索引idx
处所有数组的值,其顺序与压缩顺序相同。在但是
if len(ar1) > len(ar2)
它将抛出和异常,因此请记住这一点并相应地调整代码。在相关问题 更多 >
编程相关推荐