Potrzebujesz odświeżającego kursu na temat dzielenia tablic numpy ndarray. Znane również jako wielowymiarowe indeksowanie tablic, zobacz: docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html Wyciąć tablicę ndarray za pomocą nawiasów kwadratowych i użyć separatora przecinka, aby oddzielić, ile z nich wymiar, który chcesz. Będzie to wyglądało mniej więcej tak (nie do końca): your_array[50:100, 7, :]co spłaszcza obiekt 3D do 2d, używając tylko wycinka numer 7 dla drugiego wymiaru.
>>> arr = numpy.zeros((50,100,25))>>> arr.shape
# (50, 100, 25)>>> new_arr = arr.reshape(5000,25)>>> new_arr.shape
# (5000, 25)# One shape dimension can be -1. # In this case, the value is inferred from # the length of the array and remaining dimensions.>>> another_arr = arr.reshape(-1, arr.shape[-1])>>> another_arr.shape
# (5000, 25)
Nieznaczne uogólnienie odpowiedzi Aleksandra - np.reshape może przyjąć -1 jako argument, co oznacza "całkowity rozmiar tablicy podzielony przez iloczyn wszystkich innych wymienionych wymiarów":
np. aby spłaszczyć wszystkie wymiary oprócz ostatniego:
Nieznaczne uogólnienie odpowiedzi Petera - jeśli chcesz wyjść poza tablice trójwymiarowe, możesz określić zakres w stosunku do kształtu oryginalnej tablicy.
np. spłaszczenie wszystkich wymiarów oprócz dwóch ostatnich :
your_array[50:100, 7, :]
co spłaszcza obiekt 3D do 2d, używając tylko wycinka numer 7 dla drugiego wymiaru.Odpowiedzi:
Spójrz na numpy.reshape .
źródło
Nieznaczne uogólnienie odpowiedzi Aleksandra - np.reshape może przyjąć -1 jako argument, co oznacza "całkowity rozmiar tablicy podzielony przez iloczyn wszystkich innych wymienionych wymiarów":
np. aby spłaszczyć wszystkie wymiary oprócz ostatniego:
źródło
Nieznaczne uogólnienie odpowiedzi Petera - jeśli chcesz wyjść poza tablice trójwymiarowe, możesz określić zakres w stosunku do kształtu oryginalnej tablicy.
np. spłaszczenie wszystkich wymiarów oprócz dwóch ostatnich :
EDYCJA: Niewielkie uogólnienie mojej wcześniejszej odpowiedzi - możesz oczywiście określić również zakres na początku zmiany kształtu:
źródło
Alternatywnym podejściem jest użycie
numpy.resize()
jak w:źródło