繁体   English   中英

如何删除数组列表中数组中的就地项目

[英]How to delete in-place items in arrays in a list of arrays

我使用了以下行:

list_split_test_array = np.split(test_array, np.where(test_array == 0.)[0])

在每个0处拆分一个数组,这是我之前作为占位符任意添加的值。
这给了我一个数组列表,其中每个数组的第0个索引(第一个数组除外)为0。如何就地删除这些0,以获取不带占位符0的数组列表? 我说就地是因为我不想遍历,而是将每个数组(已删除的0)添加到新的数组列表中。

您可以使用一些预处理来删除零,这是一个示例:

import numpy as np
a = np.random.randint(0, 5, 100)
idx = np.where(a == 0)[0]

np.split(a, idx)

输出:

[array([4, 3]),
 array([0, 3, 1, 1]),
 array([0, 4]),
 array([0]),
 array([0, 1, 2, 4]),
 array([0, 4, 2, 2, 3, 1]),
 array([0, 2, 4, 3]),
 array([0, 2, 2, 4]),
 array([0, 3, 2, 1, 2, 4, 1, 2]),
 array([0]),
 array([0]),
 array([0, 1, 3]),
 array([0]),
 array([0, 1, 3, 2, 4]),
 array([0, 3, 3]),
 array([0, 3]),
 array([0, 3, 4, 1, 2, 3, 3, 4, 3, 4, 2, 1]),
 array([0]),
 array([0, 3, 2]),
 array([0]),
 array([0, 4, 1, 4, 2, 3, 1]),
 array([0, 4]),
 array([0]),
 array([0]),
 array([0, 3, 4, 2, 3]),
 array([0, 4, 4, 3, 3, 3, 1]),
 array([0, 2, 4, 1]),
 array([0, 4, 2, 2]),
 array([0])]

删除所有零a ,并计算新的指标:

idx2 = idx - np.arange(len(idx))
b = np.delete(a, idx)
np.split(b, np.unique(idx2))

这是输出:

[array([4, 3]),
 array([3, 1, 1]),
 array([4]),
 array([1, 2, 4]),
 array([4, 2, 2, 3, 1]),
 array([2, 4, 3]),
 array([2, 2, 4]),
 array([3, 2, 1, 2, 4, 1, 2]),
 array([1, 3]),
 array([1, 3, 2, 4]),
 array([3, 3]),
 array([3]),
 array([3, 4, 1, 2, 3, 3, 4, 3, 4, 2, 1]),
 array([3, 2]),
 array([4, 1, 4, 2, 3, 1]),
 array([4]),
 array([3, 4, 2, 3]),
 array([4, 4, 3, 3, 3, 1]),
 array([2, 4, 1]),
 array([4, 2, 2]),
 array([], dtype=float64)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM