我希望将下面的Python(Numpy和Scipy)代码转换成C#。在我的例子中,IronPython不是一个选项。这里的代码是为一个图像处理程序编写的,它在一个多维的浮点数组上操作,这些浮点数代表灰度图像。它正在查找行和列之间的累积差异,然后检查差异的第5个和第95个百分位,以便可以裁剪到该值。在lower_percentile=5, upper_percentile=95
# row-wise differences
rw = np.cumsum(np.sum(np.abs(np.diff(image, axis=1)), axis=1))
# column-wise differences
cw = np.cumsum(np.sum(np.abs(np.diff(image, axis=0)), axis=0))
# compute percentiles
upper_column_limit = np.searchsorted(cw, np.percentile(cw, upper_percentile), side='left')
lower_column_limit = np.searchsorted(cw, np.percentile(cw, lower_percentile), side='right')
upper_row_limit = np.searchsorted(rw, np.percentile(rw, upper_percentile), side='left')
lower_row_limit = np.searchsorted(rw, np.percentile(rw, lower_percentile), side='right')
到目前为止,我得到的是一些C代码来获得多维数组,并且我已经研究了其他解决方案。This solution处理np.差异操作,但仅适用于一维阵列。我还研究了在2D数组(如this one)上使用嵌套循环的解决方案。我知道我可能需要将这些方法结合起来,但我不确定如何结合。在
最终,这里的目标是在继续处理多维数组之前对其进行智能裁剪。似乎只要定义了数组的重要区域,this就可以用于裁剪。我绝对愿意接受其他方式。我目前有以下返回多维数组的C代码:
^{pr2}$