Удалите некоторые значения из массива numpy, чтобы изменить их правильно? - PullRequest
0 голосов
/ 07 октября 2019

У меня есть массив массивов (231250, 19), когда я пытаюсь преобразовать его в (-1,1000,19), он выдает ошибку. cannot reshape array of size 4393750 into shape (1000,19). Причина в том, что мой массивный массив не может быть завершен делимым. 4393750/19/1000 дайте мне ответ с десятичными точками. Что я хочу, чтобы удалить некоторые элементы из массива NumPy, так что он должен быть полностью изменен. если я удаляю 4750 элементов из моего массива, я могу изменить свой массив

Каждый раз, когда строки массива отличаются, поэтому я не могу придумать общее решение. Пожалуйста, помогите мне решить эту проблему.

Я придумала это решение

shape=data.ravel().shape[0]
s=shape%19000
if s!=0:
    d=data.ravel()[s//2:-s//2].reshape(-1,1000,19)

Ответы [ 3 ]

0 голосов
/ 07 октября 2019

Решение

Подать заявку floor >> indexing >> reshaping, чтобы достичь того, что вы ищете.

rows, cols = data.shape
rows = int(floor(rows/1000))
d = data[:rows,:].reshape((-1,rows,cols))
d.shape
0 голосов
/ 07 октября 2019

Чистее удалять целые строки вместо случайных элементов тут и там

a = np.zeros((231250, 19))
>>>rows, columns = a.shape
(231250, 19)

>>>4750/19
250

Мы будем случайным образом выбирать 250 строк и удалять их

delete_rows = np.random.randint(rows, size=(250, 1))
a = np.delete(a, delete_rows, axis=0)

Теперь мы можем изменить наш массив

b = a.reshape(-1,1000,19)
0 голосов
/ 07 октября 2019

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

org_size = 231250
new_size = 1000
a = np.ones((org_size, 19))[: org_size - org_size % new_size, :].reshape((-1, new_size, 19))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...