Как получить пространственное расстояние между двумя массивами, учитывая разные местоположения массивов по осям x, y - PullRequest
0 голосов
/ 02 июля 2019

У меня есть 2 массива, выборка и данные.Данные будут содержать координаты эллипса.Все точки внутри эллипса будут белыми, а снаружи - черными.

Теперь я хочу вычислить пространственное расстояние между моим массивом выборок и массивом данных (массив эллипсов), учитывая определенный центр эллипса (x, y).Все возможные точки центра эллипса хранятся в другом массиве center_points.

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


import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import distance 
center_points = []

def combinations(x,y):
    dx = 2
    dy = 2
    return x-dx,y-dy

for x in range(10):
    for y in range(10):
        center_points.append(combinations(x,y))

sample = np.random.rand(100,100)

#spatial distance 
spatial_distance = []

data = np.empty((100,100))

def ellipse(x,y):
    if (x**2+y**2/3)>300: 
        return 0
    else:
        return 1

def translate(x, y, DX, DY):
    return (x- DX, y - DY)

def rotate(m, n):
    theta = np.radians(45)
    matrix = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]])
    return np.dot(matrix, (m,n))

for i in range(data.shape[0]):
     for j in range(data.shape[1]): 
          data[i][j]= ellipse(i,j)
          data[i][j]= rotate(i,j)
          for a,b in center_points: 
              data.append((translate(i,j,a,b)))
              spatial_distance.append(distance.hamming(data,sample))



1 Ответ

0 голосов
/ 02 июля 2019

Ошибка отступа по виду вещей.Циклы for после вашей функции rotate никогда не будут запускаться, поскольку они предназначены для того, чтобы интерпретатор считал их частью функции rotate, которая возвращается до ввода циклов.

Хотя я думаю, что строка data[i][j]= rotate(i,j) в ваших циклах все равно выдаст ошибку.

РЕДАКТИРОВАТЬ: исходная ошибка была отредактирована из OP

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