Jak spłaszczyć tylko niektóre wymiary tablicy numpy
Czy istnieje szybki sposób na "spłaszczenie" lub spłaszczenie tylko niektórych pierwszych wymiarów w tablicy numpy?
Na przykład, biorąc pod uwagę tablicę numpy wymiarów (50,100,25)
, wynikowymi wymiarami będą (5000,25)
3 answers
Spójrz na numpy.zmień kształt .
>>> 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)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-04 10:52:54
Lekkie uogólnienie odpowiedzi Aleksandra-np.reshape może przyjmować -1 jako argument, co oznacza "całkowity rozmiar tablicy podzielony przez iloczyn wszystkich innych podanych wymiarów":
Np. spłaszczyć wszystkie poza ostatnim wymiarem:
>>> arr = numpy.zeros((50,100,25))
>>> new_arr = arr.reshape(-1, arr.shape[-1])
>>> new_arr.shape
# (5000, 25)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-24 18:14:30
Lekkie uogólnienie do odpowiedzi Petera -- możesz określić zakres nad oryginalnym kształtem tablicy, jeśli chcesz wyjść poza tablice trójwymiarowe.
Np. aby spłaszczyć wszystkie poza ostatnim dwa Wymiary:
arr = numpy.zeros((3, 4, 5, 6))
new_arr = arr.reshape(-1, *arr.shape[-2:])
new_arr.shape
# (12, 5, 6)
EDIT: lekkie uogólnienie do mojej wcześniejszej odpowiedzi -- można oczywiście również podać zakres na początku przeformułowania:
arr = numpy.zeros((3, 4, 5, 6, 7, 8))
new_arr = arr.reshape(*arr.shape[:2], -1, *arr.shape[-2:])
new_arr.shape
# (3, 4, 30, 7, 8)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-11 12:31:22