Я хотел бы применить функцию [lowess()][1]
по столбцам (столбец 1 1-го массива и столбец 1 2-го массива) для двух больших числовых массивов одинаковой формы (33,~14000)
, чтобы получить третий массив, содержащий сглаженные значенияс идентичной формой.
Один массив содержит значения x, а другой - значения y для функции [lowess()][1]
.
Я посмотрел на [numpy.vectorize()][1]
и, похоже, не нашел способа сделатьthis.
Существует ли векторизованное решение для этого?
Приведенный ниже код включает в себя подмножество данных (33, 5)
:
import numpy as np
from Bio.Statistics import lowess
x = np.array([[ 0.02482128, 0.04800129, 0.05970001, 0.2500887 , 0.13813114],
[-0.15335226, 0.03859329, 0.5601454 , -0.47751045, 0.14223003],
[ 0.17191982, -0.03256845, -0.2704444 , -0.093647 , -0.539505 ],
[-0.18524027, 0.01060915, -0.30057144, -0.14830208, 0.56457806],
[-0.1775446 , -0.01310873, -0.26189804, -0.17747355, -0.23629665],
[ 0.07648993, 0.11103201, 0.589818 , -0.11406326, 0.1776371 ],
[ 0.317667 , -0.01560402, 0.39747334, 0.11308289, 0.4232664 ],
[ 0.38938808, 0.23480797, -0.42039776, 0.06176662, -0.24095821],
[-0.06608486, 0.04713726, 0.35143852, 0.3167987 , 0.07772255],
[ 0.28575754, 0.08154392, -0.1795454 , -0.06183243, -0.6071148 ],
[ 0.27942848, 0.03686762, -0.11383152, -0.37741995, -0.67893934],
[ 0.09874439, -0.11218214, 0.53765774, 0.12229681, 0.09937191],
[ 0.07899189, -0.06172419, -0.01412106, 0.29815912, 0.06921196],
[-0.5575795 , 0.17440462, 0.4482336 , -0.42329168, -0.42318058],
[-0.00781012, 0.05469799, -0.00262833, -0.16313648, 0.33030987],
[ 0.01612997, -0.29763603, -0.35993958, 0.20896721, -0.01481056],
[-0.05184507, 0.22348356, 0.39140987, -0.14832544, 0.17410088],
[ 0.02847338, 0.02308035, -0.12702274, -0.19778919, 0.31087875],
[-0.5492716 , -0.02013874, 0.12577438, -0.11392832, -0.39846134],
[-0.03468943, -0.0295558 , -0.07844639, 0.04537296, 0.05451107],
[-0.18794298, 0.10741138, 0.36670208, -0.1904726 , -0.32082558],
[ 0.5786147 , 0.32772923, 0.2062025 , 0.32470465, -0.84580183],
[ 0.22584343, -0.02698565, -0.26552105, -0.06375647, 0.58737755],
[ 0.03465605, -0.24093103, -0.23005867, 0.15275288, 0.38084507],
[ 0.00937891, -0.14649105, -0.01934338, -0.23434734, -0.37168026],
[-0.02025366, -0.14081764, -0.21980095, 0.01488113, -0.2420435 ],
[-0.15545464, 0.17256403, 0.1636858 , 0.3812251 , 0.06866932],
[-0.02390814, 0.07711935, 0.28530407, 0.3817525 , 0.10252571],
[-0.2442751 , -0.0260272 , -0.2731142 , 0.31553936, 0.41060162],
[ 0.02275944, -0.00415039, 0.15864182, 0.33187914, 0.07651806],
[ 0.25222778, 0.15338421, -0.09697151, 0.0145421 , -0.08250237],
[ 0.61664677, -0.05378103, -0.5358076 , 0.15497589, -0.698823 ],
[-0.10142422, 0.4852066 , -0.25492382, -0.05385685, 0.15751743]],
dtype=np.float32)
y = np.array([[4.59169 , 4.418433 , 5.0820627, 4.6869965, 5.207094 ],
[4.5058136, 4.415601 , 5.0899377, 4.6807904, 4.9426126],
[4.5569663, 4.305499 , 4.886066 , 4.5803747, 5.056634 ],
[4.4900746, 4.37889 , 5.1278543, 4.6113243, 5.2266693],
[4.503826 , 4.400037 , 5.211916 , 4.682177 , 5.098976 ],
[4.509243 , 4.3813405, 5.3079786, 4.6301603, 5.2500844],
[4.41681 , 4.3992863, 5.0737085, 4.670207 , 5.070466 ],
[4.591771 , 4.4518366, 5.107484 , 4.596655 , 4.997365 ],
[4.494399 , 4.3796077, 5.242492 , 4.47066 , 5.0400076],
[4.519887 , 4.4044647, 5.1427035, 4.6785154, 5.021449 ],
[4.448152 , 4.4056873, 5.144441 , 4.5711513, 4.9853024],
[4.49775 , 4.385726 , 5.216489 , 4.6923037, 5.201977 ],
[4.5084896, 4.4458 , 5.2891297, 4.624942 , 4.9242325],
[4.5791883, 4.4296904, 5.280667 , 4.703702 , 5.1066465],
[4.589999 , 4.3781233, 5.0826826, 4.7128706, 5.1191587],
[4.638551 , 4.3878164, 5.1654997, 4.6913614, 5.324785 ],
[4.500376 , 4.500883 , 5.1015763, 4.656 , 5.2887416],
[4.488534 , 4.5052986, 5.367143 , 4.7019596, 5.1367083],
[4.470419 , 4.3764915, 5.065318 , 4.7039804, 5.168439 ],
[4.423869 , 4.513232 , 5.1516542, 4.609404 , 5.3527145],
[4.5888453, 4.480359 , 5.1191635, 4.676672 , 4.9557304],
[4.5064774, 4.4485407, 5.147471 , 4.648161 , 5.057909 ],
[4.557802 , 4.3785524, 5.0217905, 4.697456 , 5.0020485],
[4.54012 , 4.454771 , 5.033494 , 4.606558 , 4.8119564],
[4.6103888, 4.393633 , 5.1113367, 4.58374 , 5.0711713],
[4.574035 , 4.3336782, 5.0118513, 4.6048336, 5.288041 ],
[4.482691 , 4.3997755, 5.093251 , 4.624267 , 5.115726 ],
[4.4595666, 4.3373346, 5.1056104, 4.6904593, 5.3377056],
[4.488827 , 4.4477224, 5.190276 , 4.61971 , 5.233069 ],
[4.513173 , 4.402734 , 5.142403 , 4.625946 , 5.175432 ],
[4.4656053, 4.388732 , 5.1367936, 4.6234007, 5.249696 ],
[4.5307274, 4.429734 , 5.2134457, 4.6189766, 5.2845373],
[4.4585304, 4.471982 , 5.194815 , 4.6854787, 5.2281733]],
dtype=np.float32)
lowess.lowess(x[:,1], y[:,1])
#Output
'''array([4.39855668, 4.39910091, 4.40520765, 4.40238191, 4.40618866,
4.40353337, 4.40657502, 4.44116607, 4.39858563, 4.39976923,
4.39925592, 4.39799667, 4.3990058 , 4.4273006 , 4.39843829,
4.40196311, 4.43833446, 4.400469 , 4.40700818, 4.405916 ,
4.40225547, 4.45443733, 4.40643108, 4.40104955, 4.40217919,
4.40204647, 4.42686513, 4.39935488, 4.40659024, 4.40457143,
4.42105802, 4.40040609, 4.47989016])'''