Нахождение углов массива координат - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть двумерный массив координат в Numpy.

Моя цель - попытаться найти углы (как если бы это был квадрат). Итак:

Вверху слева: наименьший x, наивысший y Вверху справа: наибольший x, наибольший y внизу слева: наименьший x, наименьший y внизу справа: наибольший x, наименьший y

Очевидно, каждый эти пары должны учитывать другие значения.

Я пытался взять минимальное и максимальное значения в зависимости от строки:

        BottomLeft = np.min(np.min(hull, axis=1), axis=0)

Однако это не удерживает пару значений вместе. Это должно быть что-то вроде наименьшего возможного значения X, а из них наименьшее значение y. Или что-то в этом роде. Я предполагаю, что есть эффективный способ сделать это с numpy?

Вот пример данных:

    [[[260 156]]

 [[248 176]]

 [[235 197]]

 [[233 199]]

 [[192 199]]

 [[174 197]]

 [[160 171]]

 [[150 151]]

 [[154 149]]

 [[156 149]]

 [[260 151]]]

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 февраля 2020

Согласно приведенному выше обсуждению предполагается, что одна из пар с наименьшим значением x будет также соответствовать наименьшему значению y. Таким образом, вы можете сначала найти минимальное значение x:

# Some sample data
d = np.array([[3, 1, 4, 1, 5],
              [8, 0, 4, 2, 3]])
# smallest value in the first row which, I assume, is your x-values
xm = np.min(d[0, :])

Затем вы можете получить подмножество значений, имеющих это минимальное значение x, например:

d[:, d[0,:] == 1]

можно получить минимум из них через:

np.min(d[1, d[0,:] == 1])
0 голосов
/ 23 февраля 2020

предположим, что координаты x следующие:

x = np.arange(0, 22, 2)

и координаты y следующие:

y = np.arange(20, 32, 2)

xx, yy = np.meshgrid(x, y)

yy = np.flip(yy, 0)

print(xx)

print(yy)

Затем вы можете выполнить любую операцию с xx и yy, поскольку они являются координатами. * Например, 1007 *

,

. Предположим, что z - это высота

z = np.random.randint(2, high=20, size=(yy.shape[0], yy.shape[1])) # xx can also be used


import matplotlib.pyplot as plt 

plt.contourf(xx, yy, z)
plt.colorbar()

enter image description here

...