如何从包含子数组和整数的混合numpy数组中移除整数?
我有一个numpy数组,这个数组里有子数组和一个整数:
mixed_array = np.array([np.array([1, 2]), np.array([1, 2]), 0])
我想把这个数组处理一下,只留下子数组,不要那个整数。
mixed_array = np.array([np.array([1, 2]), np.array([1, 2]))
因为我处理的是非常大的数组,所以不能使用循环。
我尝试过用不同的方法来索引,比如用~is_instance()和.dtype属性。这个混合数组是通过一个很有用的包函数创建的,所以很难避免创建它。
补充:有没有可能把整数转换成数组(比如:np.array([0]),就像上面的例子?
1 个回答
1
因为对象数组和Python列表没有什么区别,所以你需要使用循环来处理它:
out = np.array([a for a in mixed_array if isinstance(a, np.ndarray)])
你可以把这个过程变得更简单(向量化),但这样做并不会提高效率:
isarray = np.vectorize(lambda x: isinstance(x, np.ndarray))
out = mixed_array[isarray(mixed_array)]
输出结果:
array([array([1, 2]), array([1, 2])], dtype=object)
总之,尽量不要一开始就创建对象数组。