[英]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.