Как я могу уменьшить размер массива numpy, а затем урезать его с конца? - PullRequest
2 голосов
/ 23 февраля 2020

У меня есть numpy массив формы (6, 100, 161). Я хочу преобразовать его в (600, 161) и затем обрезать 16 с конца, так что это (584, 161)?

Ответы [ 2 ]

3 голосов
/ 23 февраля 2020

Вы можете использовать np.reshape:

>>> import numpy as np
>>> x = np.ones((6,100,161))
>>> x = x.reshape((-1, 161))
>>> x = x[:584, :]
>>> x.shape
(584, 161)

Здесь -1 работает так:

Если исходная форма была (x, y, z )

, тогда, если вы напишите reshape(-1, z)

Это означает, что вы хотите измерения, поскольку вы дали два числа -1 и z, но вы указали размер только для 1 размерность (т.е. z), поэтому он выводит, что другой размер должен быть всем, что осталось.

Итак, общее количество элементов x * y * z, теперь после изменения формы количество элементов должно быть одинаковым. Вы указали, что вы хотите z количество столбцов, поэтому количество строк должно быть x * y * z / z == x * y. -1 облегчает это.

Например:

>>> x = np.ones((3,4,3))
# number of elements = 3 * 4 * 3 == 36
>>> y = x.reshape(9, -1)
# you say you want 9 rows, so remaining elements 
# would be, 36 / 9 == 4, so no. of cols == 4
>>> y.shape
(9, 4)
3 голосов
/ 23 февраля 2020

Вы можете вызвать изменение формы с последующим нарезкой

import numpy as np

a = np.zeros((6,100,161))

b = a.reshape(600,161)[:-16,:]

b.shape

out: (584,161)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...