我有一個RGB圖像,表示爲大小爲(500,500,3)的numpy數組。我還有一個大小數組(500,500),其中每個像素都有一個介於0和99之間的整數值。這基本上將圖像分成許多子區域。屬於子陣列的像素共享相同的整數索引。python:計算圖像子集的統計信息
我有興趣做一些計算,比如計算每個子集的均值和標準差。我可以遍歷如下的圖像做這個(計算例如平均值):
# image is of size (500, 500, 3) ->RGB values
# label is of size (500, 500) -> contains integers
import numpy as np
mean = np.zeros((100, 3))
for i in range(0, 100):
count = 0
for x in range(0,500):
for y in range(0,500):
if label[x, y] == i:
mean[i, :] += image[x, y,:]
count = count + 1
# Compute the mean
if count > 0:
mean[i,:] /= count
的方式我做它包含了很多的循環,它似乎是相當不符合Python和我想知道是否有更好的(速度感)方式來做到這一點。
謝謝!現在編寫代碼段讓我感到尷尬。你能解釋一下平均函數的參數(0)是什麼嗎?這似乎是每個軸的計算意義(這是我想要的!),但從文檔中我不清楚。 – Luca 2014-11-03 15:23:29
你會得到一個二維數組,因爲前兩個維度被蒙版壓平了,並且平均值是在第一維上計算的,所以你得到了一個包含3個元素的向量。 – Daniel 2014-11-03 15:30:43