Использование Python для сжатия и перечисления функций для объединения двух 2D-массивов для получения координат x, y? - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть два 2D-массива, каждый из которых имеет размеры 831 x 918. Если:

Matrix A = [[a (1,1), a (1,2), ...], [ a (2,1), a (2,2) ...]] Матрица B = [[b (1,1), b (1,2), ...], [b (2,1), b (2,2) ...]]

Я хотел бы объединить две матрицы, чтобы создать список с ((a (1,1), b (1,1)), (a ( 1,2), b (1,2)), ...).

Каков наилучший способ сделать это? Я попытался использовать функции zip и list, как показано ниже:

import numpy as np
from astropy.io import fits
import matplotlib.pyplot as plt

ly=fits.open(lightyield.fits)
ly=ly[0].data
dx=fits.open(de.fits)
dx=dx[0].data
combo=list(zip(dx,ly))

Однако это возвращает список длиной 831 элемент, но каждая позиция в списке имеет много элементов. Я хочу иметь только одну (x, y) точку для каждого элемента в списке, а не весь массив.

Спасибо за любую помощь. РЕДАКТИРОВАТЬ: В качестве основного примера c, для: A = [[1,2,3], [4,5,6], [7,8,9]] B = [[10,11,12], [13,14,15], [16,17,18]]

Я хочу получить список для построения графика ((1,10), (2,11), (3,12), ...).

Ответы [ 3 ]

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

Если оба являются numpy массивами, вы можете использовать чистые numpy функции и методы:

import numpy as np

A = np.arange(1, 10).reshape(3,3)
B = np.arange(10, 19).reshape(3,3)

pairs = np.stack((A,B), axis=2).reshape(-1, 2)
"""
array([[ 1, 10],
   [ 2, 11],
   [ 3, 12],
   [ 4, 13],
   [ 5, 14],
   [ 6, 15],
   [ 7, 16],
   [ 8, 17],
   [ 9, 18]])
"""
0 голосов
/ 19 февраля 2020

вы можете достичь этого как ... конвертировать A и B в np объект формы = (813,918) затем

 result = np.vstack((A[0],B[0])).T
0 голосов
/ 19 февраля 2020

Если у вас есть два массива одинаковой формы, например:

a = np.random.random((10, 15))
b = np.random.random((10, 15))

Вы можете выполнить эту операцию, чтобы получить список с парами элементов в одной позиции

[(a_, b_) for a_, b_ in zip(a.flatten(), b.flatten())]

Надеюсь, это поможет

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