【发布时间】:2020-08-24 16:45:58
【问题描述】:
我得到了这个大小为 (26,16,16,16) 的数组。 我需要绘制最后 3 个维度与不同参数的关系,但我不清楚如何在不造成灾难的情况下切割第一个维度以获得 (16,16,16) 数据值 对不起,如果这有点容易。我是 python 新手,还在学习很多基础知识。
【问题讨论】:
标签: python arrays numpy multidimensional-array
我得到了这个大小为 (26,16,16,16) 的数组。 我需要绘制最后 3 个维度与不同参数的关系,但我不清楚如何在不造成灾难的情况下切割第一个维度以获得 (16,16,16) 数据值 对不起,如果这有点容易。我是 python 新手,还在学习很多基础知识。
【问题讨论】:
标签: python arrays numpy multidimensional-array
您可以使用第一个索引访问属性,例如 ARRAY[0]、ARRAY[1]、ARRAY[2] ... 您可以通过这种方式访问所有 26 个属性并绘制它们。
【讨论】:
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, :, : ,:]
【讨论】:
问题是您需要哪个 16x16x16 值。二维数组只是一个矩阵,所以现在考虑一个三维数组。一个维度数组 (4, 3, 3) 只是一个数据对象中的四个 3x3 矩阵。因此,如果您输入 array[0],您将获得第一个 3x3,array[1] 第二个等等。
您的 4 维数组现在基本上是 26 个矩阵块,每个块 16 个矩阵深度,每个矩阵 16x16。因此,如果您只想访问第一个块,array[0] 会返回它。如果您现在想要第一个块的第三个矩阵,请转到 array[0][2] 等等。
【讨论】: