【问题标题】:How do I get 3rd dimensional array from a 4th-d array in python [closed]如何从python中的第4维数组中获取第3维数组[关闭]
【发布时间】:2020-08-24 16:45:58
【问题描述】:

我得到了这个大小为 (26,16,16,16) 的数组。 我需要绘制最后 3 个维度与不同参数的关系,但我不清楚如何在不造成灾难的情况下切割第一个维度以获得 (16,16,16) 数据值 对不起,如果这有点容易。我是 python 新手,还在学习很多基础知识。

【问题讨论】:

    标签: python arrays numpy multidimensional-array


    【解决方案1】:

    您可以使用第一个索引访问属性,例如 ARRAY[0]、ARRAY[1]、ARRAY[2] ... 您可以通过这种方式访问​​所有 26 个属性并绘制它们。

    【讨论】:

    • 该数组以形状(16、16、16)存储不同的属性值。你可以有问题地阅读它。因此,在问题的上下文中,数组的元素是属性,它们也不能称为切片,因为我们使用单个索引而不是索引范围进行访问。
    【解决方案2】:

    16x16 矩阵只是一个向量,它有 16 行,行大小为 16。

    26x16x16x16 矩阵只是一个 16x16x16 26 次的向量。你可以这样做,例如:

    dimension_1 = matrix[0:1, 16, 16, 16]
    dimension_2 = matrix[1:2, 16, 16, 16]
    dimension_3 = matrix[2:3, 16, 16, 16]
    

    如果您只想要特定行的整列,您也可以这样做:

    dimension_1 = matrix[0, :, :, :]
    dimension_2 = matrix[1, :, :, :]
    dimension_3 = matrix[2, :, :, :]
    

    其中 [a:b] 表示切片,其中 a 是您要裁剪列的初始值,b 是裁剪结束处的值。

    假设最后 3 个维度是指索引 24、25、26

    举个更具体的例子:

    random_matrix = np.random.rand(26, 16, 16, 16)
    

    现在,我们有一个巨大的矩阵,可以选择任何给定的索引

    test =  random_matrix[0, :, :, :].reshape(16, 16, 16)
    

    或者其他方式:

    test_2 = random_matrix[0, 0:16, 0:16, 0:16]
    

    选择最后三个元素:

    test_3 = random_matrix[23:26, :, : ,:]
    

    【讨论】:

    • 你试过运行这些吗?
    • 我一直在走,但现在我修好了。
    • 非常感谢,对我很有用。
    • 如果您认为我的回答真的很有帮助,您可以接受和/或点赞
    【解决方案3】:

    问题是您需要哪个 16x16x16 值。二维数组只是一个矩阵,所以现在考虑一个三维数组。一个维度数组 (4, 3, 3) 只是一个数据对象中的四个 3x3 矩阵。因此,如果您输入 array[0],您将获得第一个 3x3,array[1] 第二个等等。

    您的 4 维数组现在基本上是 26 个矩阵块,每个块 16 个矩阵深度,每个矩阵 16x16。因此,如果您只想访问第一个块,array[0] 会返回它。如果您现在想要第一个块的第三个矩阵,请转到 array[0][2] 等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 1970-01-01
      相关资源
      最近更新 更多