现在我有一个二维numpy数组,它们代表图像的坐标像素
std::dequeu
每列代表图像中的坐标,例如: array [0] = [-1,-3]表示x = -1和y = -3
现在,我要删除x小于0 &&大于5或y小于0 &&大于5的列
我知道如何删除某个值的元素
swap
是否有办法删除与删除的x共享相同索引的y?(换句话说,当满足x删除或y删除的条件时删除列)
答案 0 :(得分:2)
您可以将list
转换为ndarray
,然后创建布尔值掩码并重新分配x
,y
。嵌套的logical_and
意味着您创建x>=0 and x<=5
和y>=0 and y<=5
的掩码,然后AND
运算符确保一旦删除x[i]
,y[i]
也删除了
points = [[-1,-2,0,1,2,3,5,8], [-3,-4,0,-3,5,9,2,1]]
x = np.array(points[0,:])
y = np.array(points[1,:])
mask = np.logical_and(np.logical_and(x>=0, x<=5), np.logical_and(y>=0, y<=5))
# mask = array([False, False, True, False, True, False, True, False])
x = x[mask] # x = array([0, 2, 5])
y = y[mask] # y = array([0, 5, 2])
答案 1 :(得分:0)
您可以沿轴= 1使用np.compress来获取所需的点:
req
我假设np.compress((x>=0) * (x<=5) * (y>=0) * (y<=5), points, axis=1)
array([[0, 2, 5],
[0, 5, 2]])
,x
和y
是numpy数组。