擅长:python、mysql、java
<p>如果我理解正确,你想切片一个三维数组,但保留第三维度(即使它只是大小1)。在</p>
<p>这是一个关于Numpy数组的问题。当您有一个N维numpy数组时,传递一维的标量索引将返回一个n1维的数组,该数组沿索引的轴切片。例如:</p>
<pre><code>>>> arr = np.arange(27).reshape(3, 3, 3)
>>> arr
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
>>> arr[0]
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> arr[1]
array([[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]])
</code></pre>
<p>也可以沿不同的轴进行切片,例如:</p>
^{pr2}$
<p>无论出于什么原因,如果您希望返回N维数组而不是N维数组,最简单的方法是显式请求大小为1的切片,而不是使用标量索引。例如:</p>
<pre><code>>>> arr[0:1]
array([[[0, 1, 2],
[3, 4, 5],
[6, 7, 8]]])
</code></pre>
<p>对于其他类似的问题,我也会给出同样的建议:除了数据来自FITS文件之外,这不是一个关于PyFITS的问题。PyFITS和大多数科学Python库一样,以numpy数组的形式返回数据。在大多数科学的Python应用程序中,这些是用于数字数据的主要数据结构,因此学习一些numpy的基本知识是在Python中进行数据分析的一个先决条件。如果你在MATLAB中使用过数组的话。你可以从我的简短教程开始,但还有其他教程(可能还有更好的教程:)github.com/embray/notebooks/blob/master/numpy.ipynb</p>