Как наложить массивы различной формы? - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь наложить два массива разной формы, но не могу проецировать один поверх другого.Например:

#importing the relevant packages
import numpy as np
import matplotlib.pyplot as plt


def overplot(data1,data2):
    '''
    This function should make a contour plot
    of data2 over the data1 plot.
    '''

    #creating the figure
    fig = plt.figure()

    #adding an axe
    ax = fig.add_axes([1,1,1,1])

    #making the plot for the
    #first dataset
    ax.imshow(data1)

    #overplotting the contours
    #for the second dataset
    ax.contour(data2, projection = data2,
               levels = [0.5,0.7])

    #showing the figure
    plt.show(fig)

    return


if __name__ == '__main__':
    '''
    testing zone
    '''

    #creating two mock datasets
    data1 = np.random.rand(3,3)
    data2 = np.random.rand(9,9)

    #using the overplot
    overplot(data1,data2)

В настоящее время мой вывод выглядит примерно так:

example image

В то время как я на самом деле хотел бы проецироватьконтуры второго набора данных в первый.Таким образом, если бы я получал изображения одного и того же объекта, но с разным разрешением для камер, я мог бы делать такие графики.Как я могу это сделать?

Спасибо за ваше время и внимание.

1 Ответ

0 голосов
/ 19 сентября 2018

Обычно лучше сопоставить данные, а затем построить их.Таким образом, вы получаете полный контроль над тем, как все делается.

В приведенном вами простом примере вы можете использовать повторение вдоль каждой оси, чтобы расширить данные 3x3 для соответствия данным 9x9.То есть вы могли бы использовать data1b = np.repeat(np.repeat(data1, 3, axis=1), 3, axis=0), чтобы дать: enter image description here

Но для более интересного случая изображений, как вы упомянули в конце вашего вопроса, тогда осивероятно, не будет целых чисел, и вы будете лучше обслуживаться сплайном или интерполяцией другого типа.Это различие является примером того, почему лучше контролировать это самостоятельно, поскольку существует множество способов отображения этого типа.

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