Присоединение пары координат к массиву - PullRequest
2 голосов
/ 25 мая 2019

Мне нужно добавить 1D массивы (координаты) в 2d массив, используя numpy в Python 3.6.

Я могу сделать это со списками, используя append, как в первом примере ниже.

mastlist =[]
i=0
for i in  range (10):
    i=i+1
    coor = []
    xcoor = i
    ycoor =i*2
    coor.append(xcoor)
    coor.append(ycoor)
    mastlist.append(coor)
print(mastlist)

Но я хочу более производительный подход с использованием массивов numpy.Когда я пытаюсь преобразовать подход списка в массив (второй пример),

import numpy as np
i=0
for i in  range (10):
    i=i+1
    centroid =np.append(i,i*2)
    masterarray=np.append([centroid],axis=0)
    print(masterarray)

print(masterarray)

я получаю ошибку ниже.

Моя ошибка:

TypeError: append () отсутствует 1 обязательный позиционный аргумент: 'values'

Я бы ожидал массив, такой как:

[[1, 2], [2, 4], [3, 6], [4, 8], [5, 10], [6, 12], [7, 14], [8, 16], [9, 18], [10, 20]]

Я также возился с попытками использования extend, vstack и concatenate.

Любой совет будет приветствоваться.

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Я рекомендую сначала получить данные с одной координатой, а затем объединить их.Насколько я знаю, я не думаю, что это может быть сделано с помощью np.append

Общий метод - np.concatenate , который я вижу из класса cs231n.

Мои примеры кодов следующие:

import numpy as np
xcoor = np.arange(1,11,1).reshape(-1,1)
ycoor = np.arange(2,22,2).reshape(-1,1)
xycoor = np.concatenate((xcoor,ycoor),axis = 1)
print(xycoor)

Вывод:

[[ 1  2]
 [ 2  4]
 [ 3  6]
 [ 4  8]
 [ 5 10]
 [ 6 12]
 [ 7 14]
 [ 8 16]
 [ 9 18]
 [10 20]]
1 голос
/ 25 мая 2019

Почему бы просто не использовать понимание списка?

import numpy as np

masterarray = np.array([[i,2*i] for i in range(1,11)])

выход

array([[ 1,  2],
       [ 2,  4],
       [ 3,  6],
       [ 4,  8],
       [ 5, 10],
       [ 6, 12],
       [ 7, 14],
       [ 8, 16],
       [ 9, 18],
       [10, 20]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...