Я использую Python с numpy, scipy, matplotlib.Яркость (или изображение) с строками, соответствующими массивам переменной длины
У меня есть два списка, содержащие массивы различной длины, которые для конкретности я назову x и y и скажу, что они выглядят (фактические массивы имеют порядок ~ 1000 элементов в длину, а фактические списки имеют порядок ~ 10s до 100s ~ массивов):
x = [
np.array([0, 1, 2, 3, 4]),
np.array([0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4]),
np.array([0, 2 ,4])
]
y = [
np.array([0, 0, 1, 0, 0]),
np.array([1, 0.75, 0.5, 0.25, 0.0, 0.25, 0.5, 0.75, 1]),
np.array([0, 1, 0,])
]
каждого х-массив отсортирован, и каждый из Y-массив, упорядоченный по соответствующему х массиву, так Len (х [г]) == Len (y [i]) всегда True, а x [i] [j] всегда соответствует y [i] [j]. Каждый x-массив находится в диапазоне между теми же двумя значениями (например, 0 и 4 в приведенном выше примере).
Я хочу сделать сюжет или сохранить изображение (если возможно, я хочу знать, как это сделать), где i-я строка равна y [i] vs. x [i], с яркостью, соответствующей y -стоимость.
Так, например, в приведенном выше примере:
- Для всего участка оси х будет идти от 0 до 4 (если я сохранить изображение вместо того чтобы сделать сюжет, то я не волнуюсь о том, что я все равно явно имеет значения х на оси, но я просто знаю, что значения у каждой строки соответствуют значениям х, идущим от 0 до 4).
- Первый ряд будет иметь среднюю пятую часть строки белого цвета, а остальную часть строки - черную.
- 2-й ряд будет разделен на восьмерки, с серединой ряда черными, а два края - белыми, остальные оттенки серого.
- Третий ряд будет разделен на треть, а средняя третья строка будет белой и две краевые части черной строки.
Я уверен, что я мог бы сделать это легко, если Python или NumPy имеет какие-либо функции растягивания массива, так что я мог бы нормализовать длины всех массивов в х и у, или если Matplotlib просто имеет встроенную в функции для такого типа сюжета. Но я не знаю, существует ли это.
Кто-нибудь знает, как это сделать (или, если на то пошло, что этот сюжет будет называться)?
Большое спасибо за любую помощь. Пожалуйста, дайте мне знать, если мой вопрос неясен.
--- Дальнейшая разработка на примере выше --- Если я иду маршрут растягивая массивы на все иметь одинаковую длину, то конечные массивы выше может выглядеть примерно так (после растяжения)
x = [
np.array([0, 0, 1, 1, 2, 3, 3, 4, 4]),
np.array([0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4]),
np.array([0,0,0,2,2,2,4,4,4])
]
y = [
np.array([0, 0, 0, 0, 1, 0, 0, 0, 0]),
np.array([1, 0.75, 0.5, 0.25,0, 0 .25,0 .5, 0.75, 1]),
np.array([0, 0, 0, 1, 1, 1, 0, 0, 0])
]
И сюжет или изображение будут выглядеть примерно так, как будто это будет изображение версии y (я не могу опубликовать изображение без 10 очков репутации).
'Я уверен, что я мог бы сделать это легко, если Python или numpy имеют любые функции растяжения. Вы посмотрели документацию? Первый результат google, который я вижу для «pad numpy array», таков: http: //docs.scipy.org/doc/numpy/reference/generated/numpy.pad.html –
Хм, я не думаю, что это то, m look for - я мог бы сделать все массивы одинаковой длины, но мне нужно сделать это таким образом, чтобы значения в массиве «разбросаны» через удлиненный массив, например [0,1, 2,3,4] -> [0,0,1,2,2,3,3,4,4]. Так что растянуть, а не площадку. Я искал несколько вещей, таких как «растягивая массив numpy», но не совсем нашел то, что искал. – user3558855
Почему бы вам не включить примеры ваших желаемых финальных массивов и пример такого сюжета, который вы хотели бы видеть? –