Pythonba numpyal hogyan darabolhatok fel egy 2 dimenziós tömböt kisebb "négyzetekre"?
"Mint mondtam gyors kell legyen a program"
Akkor nem Pythonnal csinálod :)
A függvény, amit keresel, az a reshape.
import numpy as np
a = np.random.randint(1,100,(20, 20))
a.reshape((40,10))
Nem a reshapet keresem, mert az veszi az eredeti mátrix első 40 elemét és azt teszi külön sorba, viszont nekem négyzetekként kéne rendezze.
Példa 2x2es négyzetekre:
Erre:
[[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
[60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
[70, 71, 72, 73, 74, 75, 76, 77, 78, 79],
[80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]]
Ezt kéne kapjam:
[[0, 1, 10, 11],
[2, 3, 12, 13],
[4, 5, 14, 15],
...
[88, 89, 98, 99]]
Remélem így érthetőbb.
Igen. Így már világos. Ez egy eleggé specifikus use case, ilyenre nem tudok direkt megoldást, de szét lehet szedni a feladatot részlépésekre. Tehát nagyjából ezt kell csinálni:
1) felosztani a nagy mátrixot kicsikre.
2) A kis mátrixokat flatten-eled 1D tömbökké.
3) Ezeket újra konkatenálod, majd reshape.
Ez a kod ezt csinálja: [link]
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!