Numpy: выберите только один экземпляр повторяющегося значения в массиве numpy - PullRequest
0 голосов
/ 26 мая 2020

У меня есть numpy массив вида:

a=
array([[ 253.59,  309.96,    5.02, -180.  ,  -69.36, -169.  ],
       [ 253.59,  309.96,    5.02, -178.15,  -66.1 , -169.  ],
       [ 253.59,  309.96,    5.02, -178.15,  -66.1 , -169.  ],
       [ 253.59,  309.96,    5.02, -177.17,  -60.  , -166.65],
       [ 253.59,  309.96,    5.02, -176.85,  -60.  , -166.65],
       [ 255.82,  316.87,   31.31, -176.85,  -58.78, -166.65],
       [ 255.82,  316.87,   31.31, -162.37,  -58.78, -165.31],
       [ 255.82,  316.87,   31.31, -160.91,  -58.78, -165.31],
       [ 255.82,  316.87,   31.31, -160.26,  -58.78, -153.87],
       [ 255.82,  316.87,   31.31, -157.92,  -56.88, -153.87],
       [ 266.74,  322.35,   32.23, -157.92,  -56.88, -150.  ],
       [ 266.74,  322.35,   32.23, -157.14,  -56.88, -150.  ],
       [ 266.74,  322.35,   32.23, -156.24,  -56.88, -137.  ],
       [ 266.74,  322.35,   32.23, -150.  ,  -53.86, -137.  ],
       [ 266.74,  322.35,   32.24, -148.81,  -53.86, -134.69]])

Как видите, столбцы 1,2,3 идентичны, но столбцы 4,5,6 не всегда идентичны. Я хочу иметь возможность выбирать хотя бы один экземпляр каждой строки. Выбор может быть случайным. Например, желаемый результат:

b=
array([[ 253.59,  309.96,    5.02, -177.17,  -60.  , -166.65],...
 [255.82,  316.87,   31.31, -162.37,  -58.78, -165.31],...
 [ 266.74,  322.35,   32.23, -156.24,  -56.88, -137.  ]])

Есть ли способ добиться этого? Я пробовал np.unique, но в данном случае это не сработало. Я также пробовал выбирать, основываясь на вычислении разницы между [0] -a [1], но это все, что мне удалось, и я не уверен, что это правильный способ сделать это.

for i in range(a.shape[0]):
    for j in range(i-1):
        b=a[i]-a[j]
        print(b)

Жду ваших предложений.

С уважением, Пранав

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...