У меня есть массив NumPy с именем «Расстояния», который выглядит следующим образом:
[[ 5. 1. 1. 1. 2. 1. 3. 1. 1. 1.]
[ 5. 4. 4. 5. 7. 10. 3. 2. 1. 1.]
[ 3. 1. 1. 1. 2. 2. 3. 1. 1. 0.]
[ 6. 8. 8. 1. 3. 4. 3. 7. 1. 1.]
[ 4. 1. 1. 3. 2. 1. 3. 1. 1. 1.]
[ 8. 10. 10. 8. 7. 10. 9. 7. 1. 1.]
[ 1. 1. 1. 1. 2. 10. 3. 1. 1. 0.]
[ 2. 1. 2. 1. 2. 1. 3. 1. 1. 0.]
[ 2. 1. 1. 1. 2. 1. 1. 1. 5. 2.]
[ 4. 2. 1. 1. 2. 1. 2. 1. 1. 1.]]
Я хочу создать новый массив NumPy 3 * 9, взяв среднее значение так:
- Если последний столбец равен 0, определите массив c0 (1 * 9), который является средним значением всех таких строк, где последний столбец равен 0, где каждый столбец является средним значением столбцов из таких строк.
- Если последний столбецравен 1, определите массив c1 (1 * 9), который является средним для всех таких строк, где последний столбец равен 1, где каждый столбец является средним для столбцов из таких строк.
- Если последний столбец равен 2, определитемассив c2 (1 * 9), который является средним для всех таких строк, где последний столбец равен 2, где каждый столбец является средним для столбцов из таких строк.
После этого я делаю hstack, чтобы получить finalМассив 3 * 9.Я уверен, что это долгий подход, но тем не менее неправильный.
код:
c0=distances.mean(axis=1)
final = np.hstack((c0,c1,c2))
Делая это, я получаю массив 1 * 10, где каждый столбец является средним для каждого столбца из массива расстоянийОднако я не могу найти способ сделать это при условии, которое принимает среднее значение, только когда последний столбец строк равен только 0?