【发布时间】:2021-02-28 18:58:10
【问题描述】:
import numpy as np
import pandas as pd
问题
我有一张图片,n 像素宽,m 像素高。这两个数字都是偶数。像素是正方形。像素值在一个 numpy 数组中。
我需要计算每个像素中心到图像中心的距离。即紧挨着中心的像素应该有关联的值sqrt(2)/2。如果图像像棋盘,g6正方形对应的像素应该有关联的距离值应该是(2.5^2+1.5^2)^0.5=2.91
我的解决方案
我已经通过以下代码完成了任务:
image=np.zeros([2,4]) # let's say this is my image
df = pd.DataFrame(image)
distances = \
pd.DataFrame(
df.apply(
lambda row: (row.index+0.5-len(df.index)/2)**2,axis=0).to_numpy()+\
df.T.apply(
lambda row: (row.index+0.5-len(df.columns)/2)**2,axis=0).T.to_numpy())\
.apply(np.sqrt).to_numpy()
distances 将是:
array([[1.58113883, 0.70710678, 0.70710678, 1.58113883],
[1.58113883, 0.70710678, 0.70710678, 1.58113883]])
正如预期的那样。
问题
有没有更好的方法?我希望有一个更短、更面向 numpy 或更透明的方法。
【问题讨论】: