按列值重新设置numpy多级数组的范围

按列值重新设置numpy多级数组的范围,numpy,Numpy,我希望通过numpy数组的一列的值重新设置numpy数组的范围。意义- [[0, 0], [583, 0], [1166, 0], [1365, 0], [0, 583], [583, 583], [1166, 583], [1365, 583]] 到 我目前使用“硬编码”形状对其进行整形,但我希望自动进行整形。您可以使用numpy整形对该阵列进行整形 将numpy导入为np array=np.数组([[0,0],[583,0],[1166,0],[1365,0],[0583],[583583

我希望通过numpy数组的一列的值重新设置numpy数组的范围。意义-

[[0, 0], [583, 0], [1166, 0], [1365, 0], [0, 583], [583, 583], [1166, 583], [1365, 583]]


我目前使用“硬编码”形状对其进行整形,但我希望自动进行整形。

您可以使用numpy整形对该阵列进行整形

将numpy导入为np
array=np.数组([[0,0],[583,0],[1166,0],[1365,0],[0583],[583583],[1166583],[1365583])
数组。重塑(2,4,2)
输出:

array([[[   0,    0],
        [ 583,    0],
        [1166,    0],
        [1365,    0]],

       [[   0,  583],
        [ 583,  583],
        [1166,  583],
        [1365,  583]]])
详情请访问


谢谢

下面是代码,它涵盖了第二行值的可变数量的情况:

X = np.array([[0, 0], [583, 0], [1166, 0], [1365, 0], [0, 583], [583, 583], [1166, 583], [1365, 583],
              [0, 1], [581, 1], [1166, 0], [1365, 0], [3, 1], [2, 583], [1166, 583], [1365, 1]])
out = []
vs = set(X[:,-1])
for v in vs:
    idxs = X[:,-1] == v
    out.append(np.sort(X[idxs],axis=0))
out = np.array(out)

谢谢,但我就是这么做的。我希望能够在一个具有可变大小的数组上执行此操作。您可以使用任何类型的可变大小可变大小,也就是说,我不知道给定数组的大小以及其中一列中唯一数字的数量。您不需要知道给定数组的大小,但希望将该数组转换为固定大小?可以吗?
X = np.array([[0, 0], [583, 0], [1166, 0], [1365, 0], [0, 583], [583, 583], [1166, 583], [1365, 583],
              [0, 1], [581, 1], [1166, 0], [1365, 0], [3, 1], [2, 583], [1166, 583], [1365, 1]])
out = []
vs = set(X[:,-1])
for v in vs:
    idxs = X[:,-1] == v
    out.append(np.sort(X[idxs],axis=0))
out = np.array(out)