Конвертировать два массива в массив массивов, совместимых с результатом `findContours` - PullRequest
0 голосов
/ 27 января 2020

Мне нужно преобразовать два массива в массив массивов, совместимых с результатом findContours, как показано в следующем примере:

a = [1,3,5,7]
b = [2,4,6,8]
c = convert(a, b)
print(c)
# c = [ [[1,2]], [[3,4]], [[5,6]], [[7,8]] ]

Как это сделать, используя NumPy?

Ответы [ 2 ]

3 голосов
/ 27 января 2020

С пониманием zip списка довольно легко добиться желаемого.

a = [1,3,5,7]
b = [2,4,6,8]

c = list([[x,y]] for x,y in zip(a,b))

print(c)

Вывод

[[[1, 2]], [[3, 4]], [[5, 6]], [[7, 8]]]

В случае, если вам нужен массив numpy:

import numpy as np

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

c = np.array(list([[x,y]] for x,y in zip(a,b)))

print(c.shape)

Вывод:

(4, 1, 2)

Я действительно не знаю, что такое findContours.

0 голосов
/ 27 января 2020

Здесь вы можете использовать np.dstack(..) [numpy -doc] , а затем .reshape(..) [numpy -doc] результат:

>>> np.dstack((a,b)).reshape(-1, 1, 2)
array([[[1, 2]],

       [[3, 4]],

       [[5, 6]],

       [[7, 8]]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...