我有一个3D numpy数组,表示一个39层、279行、153列的模型域,数组中的值为0或1,表示域中的单元格是活动的还是非活动的,我试图创建一个279行153列的二维数组,其中数组值等于网格中最上面的活动层的层数。基本上,在每一行,列的位置,我想循环通过层,找到第一个是1,而不是0,然后把该层的号码放在二维数组中的该行,列的位置。例如:
如果一个四层(层0-3)阵列如下所示:
array([[[ 0., 1., 0., 0.],
[ 1., 0., 0., 0.],
[ 1., 0., 0., 0.]],
[[ 0., 1., 1., 0.],
[ 1., 1., 0., 0.],
[ 1., 1., 0., 0.]],
[[ 0., 0., 1., 1.],
[ 0., 1., 1., 0.],
[ 0., 1., 1., 0.]],
[[ 0., 0., 1., 1.],
[ 0., 1., 1., 1.],
[ 0., 1., 1., 1.]]])
二维数组应如下所示:
array([[[ 0., 0., 1., 2.],
[ 0., 1., 2., 3.],
[ 0., 1., 2., 3.]],
如果row-col位置在任何层中都不活动(不等于1),则结果数组中的值应为0(类似于1,1),就像它在层0中处于活动状态一样。
我尝试过修改两个解决方案,其中z轴值被求和或平均,但似乎不能找出如何得到我正在寻找的确切内容。
1条答案
按热度按时间k3bvogb11#
您可以尝试
numpy.argmax
:这是因为在定义的轴(在本例中为第0个轴)上搜索时,argmax返回第一个最大值。