Sti*_*fel 0 python arrays numpy matrix
我是一个python初学者,我试图平均两个NumPy 2D阵列的形状(1024,1024).像这样做很快:
newImage = (image1 + image2) / 2
Run Code Online (Sandbox Code Playgroud)
但是现在图像有一个"掩码",如果设置为零,则会使某些元素无效.这意味着如果其中一个元素为零,则结果元素也应为零.我的琐碎解决方案是:
newImage = numpy.zeros( (1024,1024) , dtype=numpy.int16 )
for y in xrange(newImage.shape[0]):
for x in xrange(newImage.shape[1]):
val1 = image1[y][x]
val2 = image2[y][x]
if val1!=0 and val2!=0:
newImage[y][x] = (val1 + val2) / 2
Run Code Online (Sandbox Code Playgroud)
但这真的很慢.我没有时间,但它似乎慢了100倍.
我也尝试使用lambda运算符和"map",但这不会返回NumPy数组.
试试这个:
newImage = numpy.where(np.logical_and(image1, image2), (image1 + image2) / 2, 0)
Run Code Online (Sandbox Code Playgroud)
如果没有image1
和image2
等于零,取其平均值,否则为零.
归档时间: |
|
查看次数: |
1172 次 |
最近记录: |