在python中将4维数组中获取3维数组的方法
得到了这个数组,它的大小是(26,16,16,16)。 我需要绘制最后3个维度与不同参数的关系图,但我不清楚如何在不造成灾难的情况下切割第一个维度,以便仅获得(16,16,16)数据值 对不起,如果这有点容易。我是python新手,仍在学习许多基本知识.
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]第二个,依此类推。
现在,四维数组基本上是26个矩阵块,每个块16个矩阵深,每个矩阵16x16。因此,如果只想访问第一个块,array[0]将返回该块。如果您现在想要第一个块的第三个矩阵,请执行array[0][2],依此类推。
可以通过使用第一个索引来访问属性,如数组[0]、数组[1]、数组[2]…您可以通过这种方式访问所有26个属性并绘制。
参考文献链接
https://www.cnpython.com/qa/1629737