Изменить форму np.array в соответствии с размером по умолчанию - PullRequest
2 голосов
/ 09 апреля 2019

Есть 2 np.arrays, и я хотел бы изменить np.array1 от формы (12,) по отношению к array2 с формой (4,):

array1 = np.array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) и array1.shape возвращает: (12,)

array2 = np.array([ 12, 34, 56, 78]) а также array2.shape возвращает: (4,)

Я пытался выполнить reshape:

array1.reshape(array2.shape)

Но есть ошибка: ValueError: cannot reshape array of size 12 into shape (4,)

Итак, ожидаемый результат - array1 с 4 элементами: np.array([ 1, 2, 3, 4]), вместо 12.

Буду признателен за любую идею и помощь.

1 Ответ

1 голос
/ 09 апреля 2019

Если я правильно понимаю ваши требования, я думаю, что вы ищете простую нарезку:

In [140]: array2 = np.array([ 12,  34,  56,  78])
In [135]: a_sliced =  array1[:array2.shape[0]]
In [136]: a_sliced.shape
Out[136]: (4,)

Если array2 является многомерным, то используйте подход , предложенный MadФизик :

sliced_arr = array1[tuple(slice(0, d) for d in array2.shape)]

В качестве альтернативы, если вы намеревались разбить массив на три равные половины, используйте numpy.split() как в:

# split `array1` into 3 portions
In [138]: np.split(array1, 3)
Out[138]: [array([1, 2, 3, 4]), array([5, 6, 7, 8]), array([ 9, 10, 11, 12])]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...