绘制3D numpy数组的第3轴

时间:2018-09-18 15:00:30

标签: python arrays numpy matplotlib

我有一个3D numpy数组,该数组是在特定时间戳t处的2D(m,n)图像的堆栈。所以我的数组是形状(t,m,n)。我想绘制一个像素值作为时间的函数。

例如:

import numpy as np
import matplotlib.pyplot as plt

data_cube = []
for i in xrange(10):
    a = np.random(100,100)
    data_cube.append(a)

所以我的(t,m,n)现在的形状为(10,100,100)。假设我要在我要执行的10个步骤中的每个步骤上绘制一维索引[12] [12]的值:

plt.plot(data_cube[:][12][12])
plt.show()

但是我得到索引超出范围错误。我以为我可能会混合使用索引,但是我生成的每个图似乎都在``错误''的轴上,即跨越2D数组之一,但是我希望它``通过''垂直堆栈。预先感谢!

1 个答案:

答案 0 :(得分:2)

这里是解决方法:由于您已经在使用numpy,因此将最终列表转换为数组,然后仅使用切片即可。您遇到的问题有两个:

第一:您最后的data_cube不是数组。对于列表,您将不得不遍历值

第二:切片不正确。

import numpy as np
import matplotlib.pyplot as plt

data_cube = []
for i in range(10):
    a = np.random.rand(100,100)
    data_cube.append(a)
data_cube = np.array(data_cube)   # Added this step 

plt.plot(data_cube[:,12,12]) # Modified the slicing

输出

enter image description here

一个不太冗长的版本,可以避免迭代:

data_cube = np.random.rand(10, 100,100)
plt.plot(data_cube[:,12,12])