Как удалить дублирующиеся элементы для двух массивов NumpyPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как удалить дублирующиеся элементы для двух массивов Numpy

Сообщение Anonymous »

У меня есть два массива с именем u, v,
e.g.

Код: Выделить всё

u = np.array([1.0,2.0,2.0,3.0,4.0])
v = np.array([10.0,21.0,18.0,30.0,40.0])
a = np.array([100.0,210.0,220.0,300.0,400.0])
< /code>
Если два элемента в u одинаковые, то удалите тот, который выше по значению v.
Для приведенного выше примера результат должен быть < /p>
u_new = np.array([1.0,2.0,3.0,4.0])
v_new = np.array([10.0,18.0,30.0,40.0])
a_new = np.array([100.0,220.0,300.0,400.0])

def remove_duplicates(u,v,a):
u_new, indices = np.unique(u, return_index=True)
v_new = np.zeros(len(u_new), dtype=np.float64)
a_new = np.zeros(len(u_new), dtype=np.float64)
for i in range(len(indices)):
j1 = indices[i]
if i < len(indices) - 1:
j2 = indices[i + 1]
else:
j2 = j1 + 1
v_new[i] = np.amin(v[j1:j2])
k = np.argmin(v[j1:j2]) + j1
a_new[i] = a[k]

return u_new, v_new, a_new
< /code>
Приведенный выше код имеет проблему при лечении плавающего числа, поскольку между двумя плавающими номером нет точного равенства. Так что я должен изменить его на очень «глупый» способ < /p>
def remove_duplicates(u, v, a):
u_new = u
v_new = v
a_new = a
cnt = 0
for i in range(len(u)):
if cnt  1e-5:
u_new[cnt] = u[i]
v_new[cnt] = v[i]
a_new[cnt] = a[i]
cnt += 1
else:
print("Two points with same x coord found.ignore", i)
if v_new[cnt-1] > v[i]:
v_new[cnt-1] = v[i]
a_new[cnt-1] = a[i]

return u_new[:cnt], v_new[:cnt], a_new[:cnt]
Как я могу запрограммировать это питоническим образом?

Подробнее здесь: https://stackoverflow.com/questions/409 ... mpy-arrays
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»