Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:在三维numpy数组中获取中值_Python_Arrays_Numpy - Fatal编程技术网

Python:在三维numpy数组中获取中值

Python:在三维numpy数组中获取中值,python,arrays,numpy,Python,Arrays,Numpy,我有一个三维numpy数组,其中前两个维度形成一个网格,第三个维度(我们称之为单元格)是一个属性向量。以下是数组x(每个单元格中有4个属性的2x3网格)的示例: 对于它,我想得到数组中每个单元格的8个相邻单元格的中位数,例如对于x[I,j,:],它将是所有单元格的中位数,其索引组合为I-1,I+1,j-1,j+1。很清楚如何做到这一点,但对于边界,索引将超出范围(例如,如果i=0,我将x[i-1,j,:]引入计算的一般解决方案将不起作用) 现在简单的解决方法是(简单地在不考虑的意义上)单独处理4

我有一个三维numpy数组,其中前两个维度形成一个网格,第三个维度(我们称之为单元格)是一个属性向量。以下是数组
x
(每个单元格中有4个属性的2x3网格)的示例:

对于它,我想得到数组中每个单元格的8个相邻单元格的中位数,例如对于
x[I,j,:]
,它将是所有单元格的中位数,其索引组合为
I-1
I+1
j-1
j+1
。很清楚如何做到这一点,但对于边界,索引将超出范围(例如,如果
i=0
,我将
x[i-1,j,:]
引入计算的一般解决方案将不起作用)

现在简单的解决方法是(简单地在不考虑的意义上)单独处理4个角(例如,在哪里<代码> i=j=0 < /COD>),边框(例如,在哪里<代码> i=0 < /代码>和<代码> j=0 < /COD> >)和中间单元的缺省情况,如果IF语句,但是我希望有一个更优雅的解决方案来解决这个问题。我想将n*m网格扩展为(n+2)*(m+2)网格,并用0值填充所有边上的边界单元格,但这会扭曲中值计算


我希望我能澄清这个问题。提前感谢您对解决此问题的更优雅方法的任何建议。

Scipy medfilt-?我不明白您在寻找什么样的介质。是每个“属性”有一个中位数,这样每个值就是八个相邻属性的中位数,还是每个“单元”有一个中位数,这样每个值就是八个相邻属性乘以每个单元属性的中位数?你试过了吗?或者更好?它们似乎完全包含了你所看到的答案。
[[[1 2 3 4][5 6 7 8][9 8 7 6]]
 [[9 8 7 6][5 4 3 2][1 2 3 4]]]