有没有办法使用numpy做convolution matrix操作?如何在numpy中进行卷积矩阵运算?
numpy.convolve
只适用于1D阵列,所以这不是解决方案。
我宁愿避免使用scipy,因为在Windows上安装它似乎更困难。
有没有办法使用numpy做convolution matrix操作?如何在numpy中进行卷积矩阵运算?
numpy.convolve
只适用于1D阵列,所以这不是解决方案。
我宁愿避免使用scipy,因为在Windows上安装它似乎更困难。
为了这个目的,我强烈推荐使用openCV。但是原则上,你几乎可以直接使用“伪代码”的wiki-article on kernel convolution创建自己的功能...
ks = (kl-1)/2 ## kernels usually square with odd number of rows/columns
kl = len(kernel)
imx = len(matrix)
imy = len(matrix[0])
for i in range(imx):
for j in range(imy):
acc = 0
for ki in range(kl): ##kernel is the matrix to be used
for kj in range(kl):
if 0 <= i-ks <= kl: ## make sure you don't get out of bound error
acc = acc + (matrix[i-ks+ki][j-ks+kj] * kernel[ki][kj])
matrix[i][j] = acc
此原则上应做的伎俩(但我还没有测试它... )
我希望这是有帮助的。
你SciPy的的ndimage它允许你用convolve进行N维卷积:
from scipy.ndimage import convolve
convolve(data, kernel)
我知道你说你想避免SciPy的......但我会建议反对。 Scipy在很多方面都很棒。如果你想在Windows上安装它,请尝试Anaconda Distribution,它已安装scipy。
Anaconda是一个多平台的python发行版,其中包含预装的所有基本库(包括大量科学计算库)以及诸如pip
或conda
之类的工具来安装新的库。不,他们不付钱给我做广告:/但让你的多平台生活更容易。
感谢您的建议,但SciPy方法不太可行,因为我开发的是被其他人使用,所以我更喜欢简单的方法来安装任何先决条件,'pip install [package]'是一个众所周知的方法,需要人们使用是合理的,但安装Anaconda Distribution之类的东西是另一种球类游戏。 – EquipDev
@EquipDev Scipy被认为是Python核心包之一。也许python不是你的语言。在没有scipy/numpy的情况下使用python进行数据分析就像使用没有工具箱的matlab。 –
如果您在Windows中安装scipy时遇到困难,请使用此whl文件。 http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy –