python整数因子_Python:通过非整数因子下采样2D numpy数组
我最后寫了一個小函數,使用scipy.ndimage.zoom升級圖像,但是為了縮小它,它首先將它升級為原始形狀的倍數,然后通過塊平均縮小.它接受scipy.zoom的任何其他關鍵字參數(order和prefilter)
我仍在尋找使用可用軟件包的更清潔的解決方案.
def zoomArray(inArray, finalShape, sameSum=False, **zoomKwargs):
inArray = np.asarray(inArray, dtype = np.double)
inShape = inArray.shape
assert len(inShape) == len(finalShape)
mults = []
for i in range(len(inShape)):
if finalShape[i] < inShape[i]:
mults.append(int(np.ceil(inShape[i]/finalShape[i])))
else:
mults.append(1)
tempShape = tuple([i * j for i,j in zip(finalShape, mults)])
zoomMultipliers = np.array(tempShape) / np.array(inShape) + 0.0000001
rescaled = zoom(inArray, zoomMultipliers, **zoomKwargs)
for ind, mult in enumerate(mults):
if mult != 1:
sh = list(rescaled.shape)
assert sh[ind] % mult == 0
newshape = sh[:ind] + [sh[ind] / mult, mult] + sh[ind+1:]
rescaled.shape = newshape
rescaled = np.mean(rescaled, axis = ind+1)
assert rescaled.shape == finalShape
if sameSum:
extraSize = np.prod(finalShape) / np.prod(inShape)
rescaled /= extraSize
return rescaled
總結
以上是生活随笔為你收集整理的python整数因子_Python:通过非整数因子下采样2D numpy数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让无数人头疼的网络攻击到底是什么?究竟隐
- 下一篇: Python-100例(7-8) 复制列