Вставить элементы массива в матрицу - PullRequest
0 голосов
/ 27 июня 2019

Как элементы могут (принимать только диапазон от 3 до 8)

a = np.array([1,2,3,4,5,6,7,8,9])

перейти к

A = np.array([[0,0,0],
              [0,0,0]])

Идеальный результат будет:

A = ([[3,4,5],
      [6,7,8]])

Ответы [ 2 ]

2 голосов
/ 27 июня 2019
np.arange(3, 9).reshape((2, 3))  

выходы

array([[3, 4, 5],
       [6, 7, 8]])
0 голосов
/ 27 июня 2019

Возможный метод, предполагающий, что у вас есть существующий массив NumPy a, заключается в использовании slicing и reshaping:

Начальный массив

>>> a = np.array([1,2,3,4,5,6,7,8,9])
>>> a
array([1, 2, 3, 4, 5, 6, 7, 8, 9])

Slicing

>>> A = a[2:-1]
>>> A
array([3, 4, 5, 6, 7, 8])

Изменение формы

>>> A.reshape((2, 3))
>>> A
array([[3, 4, 5],
       [6, 7, 8]])

Приведенное выше решение предполагает, что вы знаете, какой индекс выбрать при выполнении нарезки.В этом случае я предположил, что мы знали, что элемент 3 находится во второй позиции индекса, и я предположил, что мы знали, что последний требуемый элемент 8 произошел со второй до последней позиции в массиве (по индексу -1).Для ясности: нарезка начинается с заданного индекса, но идет вверх и не включает в себя вторую позицию индекса. И часто легче найти позицию индекса ближе к концу списка, считая в обратном порядке, используя отрицательные номера индекса, как я сделалВот.Альтернативой может быть использование позиции индекса последнего элемента, который является 8:

A = a[2:8].

Однострочным решением будет последовательная цепочка вызовов методавместе:

Начальный массив

>>> a = np.array([1,2,3,4,5,6,7,8,9])
>>> a
array([1, 2, 3, 4, 5, 6, 7, 8, 9])

Нарезка и изменение формы

>>> A = a[2:-1].reshape((2, 3))
>>> A
array([[3, 4, 5],
       [6, 7, 8]])
...