Инициализировать массив с определенной формой с определенными значениями - PullRequest
0 голосов
/ 25 апреля 2018

Привет, numpy новичок здесь:

Я пытаюсь создать массив формы NxWxHx2, инициализированный соответствующими значениями индекса. в этом случае W = H всегда.

например: для массива формы Nx5x5x2, если бы я написал его на бумаге, он должен быть:

N раз следующие


(0,0) (0,1) (0,2) (0,3) (0,4)

(1,0) (1,1) (1,2) (1,3) (1,4)

(2,0) (2,1) (2,2) (2,3) (2,4)

(3,0) (3,1) (3,2) (3,3) (3,4)

(4,0) (4,1) (4,2) (4,3) (4,4)


Я посмотрел на "arange" fkt, а также на расширение массивов с помощью "newaxis", но не смог получить желаемый результат.

извините за ужасное форматирование.

спасибо за помощь!

edit: я придумал что-то подобное, но это нехорошо. для массива формы 1x3x3x2

t = np.empty([1,3,3,2])
for n in range(1):
    for i in range(3):
        for p in range(3):
            for r in range(2):
                if r == 0:
                    t[n,i,p,r]=i
                else:
                    t[n,i,p,r]=p    

Ответы [ 3 ]

0 голосов
/ 25 апреля 2018

Я бы начал с

W=5; H=5; N=3

a = [[(h, w) for w in range(W)] for h in range(H)]
Out[1]: 
[[(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)],
 [(1, 0), (1, 1), (1, 2), (1, 3), (1, 4)],
 [(2, 0), (2, 1), (2, 2), (2, 3), (2, 4)],
 [(3, 0), (3, 1), (3, 2), (3, 3), (3, 4)],
 [(4, 0), (4, 1), (4, 2), (4, 3), (4, 4)]]

arr = [a for i in range(N)]

arr = np.array(arr)
0 голосов
/ 25 апреля 2018
import numpy as np

x, y = np.mgrid[0:5, 0:5]

arr = np.array(zip(y.ravel(), x.ravel()), dtype=('i,i')).reshape(x.shape)

Это также должно сработать и на самом деле является просто альтернативой ответу Пола Панцера.

0 голосов
/ 25 апреля 2018

Один из способов - выделить пустой массив

>> out = np.empty((N, 5, 5, 2), dtype=int)

и затем использовать трансляцию, например

>>> out[...] = np.argwhere(np.ones((5, 5), dtype=np.int8)).reshape(5, 5, 2)

или

>>> out[...] = np.moveaxis(np.indices((5, 5)), 0, 2)

или

>>> out[..., 0] = np.arange(5)[None, :, None]
>>> out[..., 1] = np.arange(5)[None, None, :]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...