我有一個numpy的陣列X的圖像:與numpy的/大熊貓組骨料替換的一組值
array([[ 0.01176471, 0.49019608, 0.01568627],
[ 0.01176471, 0.49019608, 0.01568627],
[ 0.00784314, 0.49411765, 0.00784314],
...,
[ 0.03921569, 0.08235294, 0.10588235],
[ 0.09411765, 0.14901961, 0.18431373],
[ 0.10196078, 0.15294118, 0.21568627]])
我已經跑了clusterizer算法移到該陣列找到相似的顏色,並且具有另一陣列帶班的每個像素Y:
array([19, 19, 19, ..., 37, 20, 20], dtype=int32)
什麼是最快的,最漂亮,最pythonistic的方式,以取代所有像素的顏色與平均超過該集羣集羣?
我想出了下面的代碼:
import pandas as pd
import numpy as np
<...>
df = pd.DataFrame.from_records(X, columns=list('rgb'))
df['cls'] = Y
mean_colors = df.groupby('cls').mean().values
# as suggested in comments below
# for cls in range(len(mean_colors)):
# X[Y==cls] = mean_colors[cls]
X = mean_colors[Y]
有沒有辦法做到這一點只大熊貓或僅在numpy的?
假設'Y'包含所有標籤,那麼簡單的索引'mean_colors [Y]'怎麼樣? – Divakar
對於你的例子,你的代碼不工作,因爲你有'Y' 3個不同的值,你什麼時候比較'Y == cls'什麼都沒有發生,因爲索引中沒有...(cls只等於0 ,1,2) –
@Divakar是的,這很漂亮,謝謝! – Direvius