Ответ 1
>>> import numpy as np
>>> old_set = [[0, 1], [4, 5]]
>>> new_set = [[2, 7], [0, 1]]
>>> (np.array(old_set) + np.array(new_set)) / 2.0
array([[1., 4.],
[2., 3.]])
Учитывая два ndarrays
old_set = [[0, 1], [4, 5]]
new_set = [[2, 7], [0, 1]]
Я ищу, чтобы получить среднее значение соответствующих значений между двумя массивами, чтобы данные попадали примерно так:
end_data = [[1, 4], [2, 3]]
в основном это применит что-то вроде
for i in len(old_set):
end_data[i] = (old_set[i]+new_set[i])/2
Но я не знаю, какой синтаксис использовать. Спасибо за помощь заранее!
>>> import numpy as np
>>> old_set = [[0, 1], [4, 5]]
>>> new_set = [[2, 7], [0, 1]]
>>> (np.array(old_set) + np.array(new_set)) / 2.0
array([[1., 4.],
[2., 3.]])
Вы можете создать трехмерный массив, содержащий ваши двухмерные массивы для усреднения, а затем усреднить по axis=0
, используя np.mean
или np.average
(последний допускает взвешенные средние):
np.mean( np.array([ old_set, new_set ]), axis=0 )
Эта схема усреднения может применяться к любому массиву (n)
-dimensional, поскольку созданный массив (n+1)
-dimensional всегда будет содержать исходные массивы, которые должны быть усреднены по его axis=0
.
numpy.average
Также numpy.average
может использоваться с тем же синтаксисом:
import numpy as np
a = np.array([np.arange(0,9).reshape(3,3),np.arange(9,18).reshape(3,3)])
averaged_array = np.average(a,axis=0)
Преимущество numpy.average по сравнению с numpy.mean
- это возможность использовать также параметр весов как массив одинаковой формы
weighta = np.empty((3,3))
weightb = np.empty((3,3))
weights = np.array([weighta.fill(0.5),weightb.fill(0.8) ])
np.average(a,axis=0,weights=weights)
Если вы используете маскированные массивы, рассмотрите также numpy.ma.average
, потому что numpy.average
t справиться с ними.