如何从包含子数组和整数的混合numpy数组中移除整数?

0 投票
1 回答
35 浏览
提问于 2025-04-12 01:30

我有一个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)

总之,尽量不要一开始就创建对象数组。

撰写回答