Joe*_*Joe 7 python arrays numpy image-processing matrix-multiplication
我正在进行Python和NumPy的第一次真正的尝试,以进行一些图像处理.我将图像加载为3维NumPy数组,其中轴0表示图像带,而轴1和2表示像素的列和行.由此,我需要采用代表每个像素的3x1矩阵并执行一些操作,从而产生另一个3x1矩阵,这将用于构建结果图像.
我的第一种方法(简化和随机数据)如下所示:
import numpy as np
import random
factor = np.random.rand(3,3)
input = np.random.rand(3,100,100)
results = np.zeros((3,100,100))
for x in range(100):
for y in range(100):
results[:,x,y] = np.dot(factor,input[:,x,y])
Run Code Online (Sandbox Code Playgroud)
但这让我感到不雅和低效.有没有办法在元素方面做到这一点,例如:
results = np.dot(factor,input,ElementWiseOnAxis0)
Run Code Online (Sandbox Code Playgroud)
在试图找到这个问题的解决方案时,我遇到了这个问题,这显然非常相似.但是,提交人无法解决问题令他们满意.我希望自2012年以来某些事情发生了变化,或者我的问题与他们的问题有很大的不同,使其更容易解决.
far*_*rth 11
Numpy数组默认使用逐元素乘法.查看numpy.einsum和numpy.tensordot.我想你要找的是这样的:
results = np.einsum('ij,jkl->ikl',factor,input)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12455 次 |
| 最近记录: |