[Python][NumPy] Macierze
-
- Użytkownik
- Posty: 81
- Rejestracja: 14 lis 2019, o 22:59
- Płeć: Kobieta
- wiek: 19
- Podziękował: 23 razy
[Python][NumPy] Macierze
Witam wszystkich. Mam pewien problem, mianowicie muszę stworzyć, korzystając z modułu random, trzy wektory o tej samej długości. Z tym nie mam problemu, ale potem mam zamieścić je w jednej trójwymiarowej macierzy, a następnie rozpoznać, na której osi są umieszczone dane wektory. W jaki sposób można to rozpoznać?
Ostatnio zmieniony 27 lis 2021, o 00:25 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Powód: Poprawa wiadomości.
-
- Użytkownik
- Posty: 128
- Rejestracja: 5 lip 2015, o 14:48
- Płeć: Mężczyzna
- Lokalizacja: nie wiem
- Podziękował: 11 razy
- Pomógł: 24 razy
Re: Python - macierze - NumPy
Jeśli długość wektorów jest inna niż 3 to łatwo, w przeciwnym razie nie mam pomysłu jak to sprawdzić. Jakby to był secure random to można by coś kombinować czy dany układ jest wystarczająco silny, ale z zwykłym random brak pomysłów.
-
- Użytkownik
- Posty: 4
- Rejestracja: 28 gru 2017, o 19:56
- Płeć: Mężczyzna
- Lokalizacja: Polska
- Pomógł: 1 raz
Re: Python - macierze - NumPy
Według mnie zadanie nie ma większego sensu. Do tego, aby umieścić wektory w macierzy użyjemy jednej z metod:
- hstack
- vstack
- append
Bez względu na to, której metody użyjemy podczas umieszczania wektorów wewnątrz tej macierzy definiujemy na której z osi mają one się znaleźć. Jeżeli już koniecznie chcemy programowo ustalić która z osi zawiera te wektory możemy posłużyć się atrybutem shape. Atrybut shape ma strukturę krotki składającej się z rozmiarów poszczególnych osi macierzy. Korzystając z operacji modulo możemy łatwo ustalić, która z metod została użyta.
- hstack
- vstack
- append
Bez względu na to, której metody użyjemy podczas umieszczania wektorów wewnątrz tej macierzy definiujemy na której z osi mają one się znaleźć. Jeżeli już koniecznie chcemy programowo ustalić która z osi zawiera te wektory możemy posłużyć się atrybutem shape. Atrybut shape ma strukturę krotki składającej się z rozmiarów poszczególnych osi macierzy. Korzystając z operacji modulo możemy łatwo ustalić, która z metod została użyta.
-
- Użytkownik
- Posty: 128
- Rejestracja: 5 lip 2015, o 14:48
- Płeć: Mężczyzna
- Lokalizacja: nie wiem
- Podziękował: 11 razy
- Pomógł: 24 razy
Re: Python - macierze - NumPy
A masz jakiś pomysł jak to ustalić kiedy osie są równe? Trzy wektory o długości 3.
-
- Użytkownik
- Posty: 4
- Rejestracja: 28 gru 2017, o 19:56
- Płeć: Mężczyzna
- Lokalizacja: Polska
- Pomógł: 1 raz
Re: Python - macierze - NumPy
Tak. Otóż, jeżeli wszystkie wektory znajdują się na osi 1, krotka shape będzie miała wartość (1,9). W przypadku, gdy będą one wpisane na osi 0, krotka będzie miała wartość (3,3). Można popełnić błąd myślowy, polegający na pomyleniu osi "macierzy" (a tak naprawdę tensora rzędu 2), z transpozycją tej "macierzy". Wektory nigdy nie zostaną wpisane jako transponowane, o ile tej transpozycji bezpośrednio nie wyrazimy. Poniżej kilka przykładów.
Kod: Zaznacz cały
import numpy as np
v1 = np.random.random(3)
v2 = np.random.random(3)
v3 = np.random.random(3)
m1 = np.array([[v1],[v2],[v3]]) #wektory na osi 0, tensor 3 rzędu
m2 = np.array([v1,v2,v3]) #wektory na osi 0, tensor 2 rzędu ("macierz")
m3 = np.vstack([v1,np.vstack([v2,v3])]) #wektory na osi 0, tensor 2 rzędu ("macierz")
m4 = np.hstack([v1,np.hstack([v2,v3])]) #wektory na osi 0, tensor 1 rzędu ("wektor")
m5 = np.append(np.array([v1]),np.append(np.array([v2]),np.array([v3]), axis = 1), axis = 1) #wektory na osi 1, tensor 2 rzędu ("macierz")
m6 = np.append(np.array([v1]),np.append(np.array([v2]),np.array([v3]), axis = 0), axis = 0) #wektory na osi 0, tensor 2 rzędu ("macierz")
print(m1.shape)
print(m1)
print(m2.shape)
print(m2)
print(m3.shape)
print(m3)
print(m4.shape)
print(m4)
print(m5.shape)
print(m5)
print(m6.shape)
print(m6)
Kod: Zaznacz cały
(3, 1, 3)
[[[0.18355889 0.36373735 0.92515974]]
[[0.63372584 0.95619418 0.81640724]]
[[0.88232588 0.76941389 0.612795 ]]]
(3, 3)
[[0.18355889 0.36373735 0.92515974]
[0.63372584 0.95619418 0.81640724]
[0.88232588 0.76941389 0.612795 ]]
(3, 3)
[[0.18355889 0.36373735 0.92515974]
[0.63372584 0.95619418 0.81640724]
[0.88232588 0.76941389 0.612795 ]]
(9,)
[0.18355889 0.36373735 0.92515974 0.63372584 0.95619418 0.81640724
0.88232588 0.76941389 0.612795 ]
(1, 9)
[[0.18355889 0.36373735 0.92515974 0.63372584 0.95619418 0.81640724
0.88232588 0.76941389 0.612795 ]]
(3, 3)
[[0.18355889 0.36373735 0.92515974]
[0.63372584 0.95619418 0.81640724]
[0.88232588 0.76941389 0.612795 ]]
-
- Użytkownik
- Posty: 128
- Rejestracja: 5 lip 2015, o 14:48
- Płeć: Mężczyzna
- Lokalizacja: nie wiem
- Podziękował: 11 razy
- Pomógł: 24 razy
Re: Python - macierze - NumPy
Trochę inaczej zrozumiałem treść zadania, ale nie znam się na pythonie więc kłócił się nie będę, fajnie, że to rozpisałeś, dziękuję za Twój czas