Łączenie i sortowanie macierzy

0

Hej mam następujący problem: mam dwa wektory zawierające chwile czasowe:

a = np.array((0.23, 1.70))
a_ = np.array((0, 0.5, 1, 1.5, 2))

oraz dwa wektore odpowiadajace wartosciom funkcji w tych chwilach czasowych

b = np.array((3, -1.2))
b_ = np.array((0, 3, 3, 3, -1.2))

Zalezy mi na tym zeby polaczyc wektory a, a_ i b, b_ w jeden i posortowac wektor powstaly z a, a_ rosnaco. Efekt finalny powinien wygladac tak:

A = np.array((0, 0.23, 0.5, 1, 1.5, 1.70, 2))
B = np.array((0, 3, 3, 3, 3, -1.2, -1.2))

Jak to zrobic? Bo tutaj podalem prosty przyklad ale ogolnie bede pracowal na dluzszych wektorach. Mysalem zeby polaczyc wektory a, a_ oraz b, b_, pozniej zrobic z nich macierz i posortowac po czasie (czyli pierwszym wierszu) ale jak posortuje po pierwszym wierszu to w drugim wartosci sie nie zmienia a pozniej tez chce miec do nich dostep a dokladnie liczyc roznice pomiedzy kolejnymi elementami (przyrosty czasu i wartosci)

0

@lion137: działa jeśli chodzi o czas, ale problem jest z macierzami b, b_. Bo tutaj mam na myśli pary liczb: czas i odpowiadajaca temu czasowi wartosc ze zbioru b lub b_. Np. dla chwili 0.23 wartosc funkcji wynosi 3, a dla chwili 1.70 wartosc funkcji wynosi -1.20. Takze czas i wartosc sa ze soba polaczone, i to co chce zrobic to posortowac czas ale zeby jednoczesnie zmienila sie kolejnosc wartosci w wektorze powstalym z wektorow b, b_.

1

To trochę kombinacji:

c = np.concatenate((a, a_), axis=0)
d = np.concatenate((b, b_), axis=0)
zipped = zip(c, d)
sorted_zip = sorted(zipped, key=lambda x: x[0])
A = np.array([x[0] for x in sorted_zip])
B = np.array([x[1] for x in sorted_zip])
0

@lion137: Dokładnie o to chodziło, dzięki wielkie!

1 użytkowników online, w tym zalogowanych: 0, gości: 1