Я пытаюсь перебрать исходный массив, чтобы изменить несколько элементов в массиве назначения, но я не могу получить правильные индексы, у меня непонятные смещения. В общем, моя задача состоит в том, чтобы изменить элемент, если условия требуют его
import numpy as np
x = np.linspace(0,1000, 1000/50)
y = np.linspace(0,1000, 1000/50)
X,Y = np.meshgrid(x,y)
source = np.column_stack([X.ravel(), Y.ravel()]).astype(int)
destination = source.copy()
for x, i in np.ndenumerate(source):
# if smth:
destination[i] = np.array([x[0] + 10, x[1]])
Я думаю, что я не должен использовать исходный массив, а только выполнять итерации по целевому массиву (не может быть сделано с использованием стандартных методов),скажите мне правильное решение, спасибо заранее.
Current output:
[421 789]
[473 789]
[526 789]
[578 789]
[631 789]
[684 789]
Required output:
[431 789]
[483 789]
[536 789]
[588 789]
[641 789]
[694 789]
Я объясню более просто, у меня есть сетка, у нее есть точки, мне нужно сместить точки, скажем, 88, 89, 90, 10пикселей вправо, для этого мне нужно иметь массив источника и места назначения (где эти точки смещены), перечислить, скорее всего, это мне не подходит, но обычное редактирование массива, как для x в пункте назначения: при редактированииx дает желаемый результат, но это не относится к ndarray
for x, i in enumerate(destination):
inside = cv2.pointPolygonTest(cnt, (destination[x,0],
destination[x,1]), False)
if inside > 0:
cv2.circle(img, (destination[x,0], destination[x,1]), 10,
(255,0,0), 2)
destination[x] = np.array([destination[x,0] + 10, destination[x,1]])
# Contour(cnt)
[[550 42]
[600 42]
[690 273]
[640 273]]
Как вы понимаете, мне нужно сдвинуть все, что обведено всиний на 10 пикселей