首页 > 解决方案 > 根据条件从 numpy 数组的子数组中删除行

问题描述

我有以下 numpy 数组:

x = [[1,2],[3,4],[10,1]]
y = [[5,6],[1,8],[7,8]]
z = [[10,2],[9,10],[11,12]]
xyz = np.array([x,y,z])

x我想删除每个, y,z内的第一列中值为 10 的行xyz。所以我想要的输出:

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

       [[ 5,  6],
        [ 1,  8],
        [ 7,  8]],

       [[ 9, 10],
        [11, 12]]], dtype=object)

我试过xyz[xyz[:,:,0]!=10]了,但这并不能保留xyz. 我想我可以遍历第一个维度,切片并附加到一个新数组,但我正在寻找一个更简单(可能是单线)的解决方案。

标签: pythonarraysnumpy

解决方案


尝试:

np.array([a[a[:,0]!=10] for a in xyz])

但是,由于尺寸不匹配,这不再是真正的 3D numpy 数组。


推荐阅读