Python 基于一维条件删除数据阵列中的元素
在Numpy数组中,如何根据不同维度中的条件删除维度中的元素 我有:Python 基于一维条件删除数据阵列中的元素,python,numpy,numpy-ndarray,Python,Numpy,Numpy Ndarray,在Numpy数组中,如何根据不同维度中的条件删除维度中的元素 我有: [[[1 3] [1 4]] [[2 6] [2 8]] [[3 5] [3 5]]] 我想根据条件x[:,:,1]
[[[1 3]
[1 4]]
[[2 6]
[2 8]]
[[3 5]
[3 5]]]
我想根据条件x[:,:,1]<7删除
所需输出[:,1,:]已删除:
编辑:固定打字错误这可能有效:
x[np.where(np.all(x[..., 1] < 7, axis=1)), ...]
您确实获得了一个额外的维度,但很容易删除:
np.squeeze(x[np.where(np.all(x[..., 1] < 7, axis=1)), ...])
简要介绍其工作原理:
首先是条件:x[…,1]<7。
然后测试该条件是否对特定轴上的所有元素有效:np.allx[…,1]<7,轴=1。
然后,使用where来获取索引,而不是布尔数组:np.wherenp.allx[…,1]<7,axis=1。
并将这些索引插入相关维度:x[np.其中np.allx[…,1]<7,axis=1,…]。这可能适用于:
x[np.where(np.all(x[..., 1] < 7, axis=1)), ...]
您确实获得了一个额外的维度,但很容易删除:
np.squeeze(x[np.where(np.all(x[..., 1] < 7, axis=1)), ...])
简要介绍其工作原理:
首先是条件:x[…,1]<7。
然后测试该条件是否对特定轴上的所有元素有效:np.allx[…,1]<7,轴=1。
然后,使用where来获取索引,而不是布尔数组:np.wherenp.allx[…,1]<7,axis=1。
然后将这些索引插入到相关维度中:x[np.其中np.allx[…,1]<7,axis=1,…]。作为所需的输出,在axis=0上过滤x。因此,你可以这样尝试
m = (x[:,:,1] < 7).all(1)
x_out = x[m,:,:]
作为所需的输出,在轴=0上过滤x。因此,你可以这样尝试
m = (x[:,:,1] < 7).all(1)
x_out = x[m,:,:]
我不知道如何将您的条件连接到所需的输出:只有一个元素小于7。这是否意味着第二维度被完全移除?你是说x[:,:,1]<7?因为您的示例具有所有真实条件。是的,x[:,:,1]<7。打字错误固定的谢谢。你是说[1,:,:]被删除了吗?我不知道如何将你的条件连接到你想要的输出:只有一个元素小于7。这是否意味着第二维度被完全移除?你是说x[:,:,1]<7?因为您的示例具有所有真实条件。是的,x[:,:,1]<7。打字错误固定的谢谢。你是说[1,:,:]被删除了吗?