Python 当scipy数组没有字段名时,如何使用order属性对其进行排序?

Python 当scipy数组没有字段名时,如何使用order属性对其进行排序?,python,numpy,scipy,Python,Numpy,Scipy,我有一个2d scipy阵列(oigion是rgb图像的单色通道)。我想找出一个元素的具体发生情况。我可以用 np.argsort(arr) 做这项工作 但问题是我想沿着轴按特定的顺序来做。这样做的scipy示例如下 x = np.array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')]) np.argsort(x, order=('x','y')) x=np.array([(1,0),(0,1)],d

我有一个2d scipy阵列(oigion是rgb图像的单色通道)。我想找出一个元素的具体发生情况。我可以用

   np.argsort(arr)
做这项工作

但问题是我想沿着轴按特定的顺序来做。这样做的scipy示例如下

   x = np.array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')])
   np.argsort(x, order=('x','y'))

x=np.array([(1,0),(0,1)],dtype=[('x','好的,假设您有一个普通的numpy数组:

In [34]: x = np.array([(1, 0), (0, 1)])
您可以使用
view
将其作为所谓的视图进行查看:

In [35]: y = x.ravel().view(dtype=[('x', x.dtype), ('y', x.dtype)])
现在,您可以将
y
上的
np.argsort
order
参数一起使用:

In [36]: np.argsort(y, order=('x','y'))

我尝试了下面的例子,它给出了索引0总是
x=np.array([[0,3],[2,2],[5,5],[0,0],[6,3]),y=x.view(dtype=[('x',x.dtype],('y',x.dtype)],np argsort(y,order=('y','x'))
返回
数组([[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0])))
y>应该是(5,,,而不是(5,1)的形状)使用
y=np.array([(0,3),(2,2),(5,5),(0,0),(6,3)],dtype=[('x','通过这样做,视图不会被创建…无论如何,我的数据是以我所写的形式…如果您可以用相同的格式指定解决方案的话。Thanks@Shan:啊,现在我明白了。我应该在查看之前使用
ravel
。我已经编辑了我的答案来说明我的意思。