程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何从 Python 中的多维数组中获取一个二维数组?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何从 Python 中的多维数组中获取一个二维数组??

开发过程中遇到如何从 Python 中的多维数组中获取一个二维数组?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何从 Python 中的多维数组中获取一个二维数组?的解决方法建议,希望对你解决如何从 Python 中的多维数组中获取一个二维数组?有所启发或帮助;

我有一个布尔型 Python ndarray,形状如下:(32,1600,1600)。从 1 到 32,每一层(我将 1600x1600 可视化为一个层,将 32 可视化为 32 层)具有不同数量的 True,并且 True 可能位于其各自 2D 层中的不同索引处。我想将其从 32“展平”(不知道这是否正确)到 1,以便结果数组是 (1600,1600) 并且每个 True 都转移到结果中的相应位置。这是我的起始多维数组的一个非常简化的示例。该数组是布尔值,带有 True/false,但在此示例中,我使用 0 表示 false,1 表示 True:

array([[[0,0],[0,1,#two "Trues"
        [0,#one "True"
        [0,0]],[[0,0]]])

我希望最终的数组看起来像这样。每个 True 位置都被转移到新数组中的相应位置。既然是布尔值,就不应该累加。

array([[[0,0]]])

解决方法

既然你有一个布尔数组,让我们创建一个。

a = np.array([[[0,0],[0,1,0]],[[0,0]]],dtype=bool)

您想沿第一个轴执行 or 操作。为此,您可以简单地沿第零轴求和,并找出元素是否大于零。

a.sum(axis=0) > 0

给出:

array([[false,false,false],[false,True,false]])

要将其转换为整数数组,只需将其乘以 1:

1 * (a.sum(axis=0) > 0)

给出:

array([[0,0]])
,

你可以试试这个:

import numpy as np

arr = np.array([[[0,dtype=bool)

result = 1*np.logical_or.reduce(arr,axis=0)
,

我相信这就是您要寻找的,而且我认为按照您的描述将其转换回 True / false 应该很容易。如果您需要任何帮助,请发表评论。

arr = [[[0,0]]]

new_arr = [ [ 1 if arr[0][i][j] == 1 or arr[1][i][j] == 1 else 0 for j in range(len(arr[0][0])) ] for i in range(len(arr[0])) ]

print(new_arr)

输出:

[[0,0]]

大佬总结

以上是大佬教程为你收集整理的如何从 Python 中的多维数组中获取一个二维数组?全部内容,希望文章能够帮你解决如何从 Python 中的多维数组中获取一个二维数组?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。