Как усечь массив numpy?

1

Я пытаюсь обрезать "данные" (размером 112943), чтобы сформировать (1,15000) со следующей строкой кода:

data = np.reshape(data, (1, 15000))

Однако это дает мне следующую ошибку:

ValueError: cannot reshape array of size 112943 into shape (1,15000)

Любые предложения по устранению этой ошибки?

Теги:
numpy
reshape
valueerror

2 ответа

3
Лучший ответ

Другими словами, поскольку вам нужны только первые 15K-элементы, вы можете использовать базовую нарезку для этого:

In [114]: arr = np.random.randn(112943)

In [115]: truncated_arr = arr[:15000]

In [116]: truncated_arr.shape
Out[116]: (15000,)

In [117]: truncated_arr = truncated_arr[None, :]

In [118]: truncated_arr.shape
Out[118]: (1, 15000)
  • 1
    Это сработало! Спасибо
2

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

>>> import numpy as np
>>> 
>>> a = np.arange(17)
>>> 
# copy
>>> np.resize(a, (3,3))
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> 
# in-place - only use if you know what you are doing
>>> a.resize((3, 3), refcheck=False)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

Обратите внимание: я полагаю, потому что интерактивная оболочка содержит некоторые дополнительные ссылки на недавно оцененные вещи - мне пришлось использовать refcheck=False для опасной версии на месте. В сценарии или модуле вам не придется, и вы не должны.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню