【发布时间】:2021-06-24 16:44:34
【问题描述】:
我有一个 3D 数组(时间、y 方向、x 方向),我想在空间上拆分它。但是,有没有办法对空间数组进行对角切片,而不是只在 y 和 x 中切片?
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
data = np.random.rand(100,45,60)
data_1 = data[:,0:30,0:30]
X,Y = np.meshgrid(np.arange(0,60,1),np.arange(0,45,1))
plt.contourf(X,Y,data[2])
plt.show()
plt.contourf(data_1[2])
plt.xlim(0,60)
plt.ylim(0,45)
plt.show()
第一个图显示了 data 的等高线图,然后是 data_1,但是有没有办法对角切片?比如红线在哪里。
切片是指仅在 x 和 y 方向选择 3D 数据数组的部分。比如只获取红色箭头下的数据。
【问题讨论】:
-
“切片”是什么意思?你想输出什么?
-
同意马库斯。另外请注意,如果您有 30x30 矩阵,您可以将对角线下方的数据分类 x+y 30。
-
哦,是的! @Tristan,我认为这可能正在完成我想要做的事情。我现在将更新问题以说明我对切片的意思
-
为了做到 x + y >30... 在我的情况下,我会这样做:X + Y > 30... plt.contourf(X,Y, data_1)?
-
您要对绘图还是数据进行切片?如果绘图,一个部分可能应该设置为 0,或 NaN。如果是数据,您是否要转换数据形状(转换为较小的二维数组或一维数组),或者将一半的值设置为例如0 或 NaN,还是屏蔽它们?
标签: python arrays numpy jupyter slice