print(s0[3][0][0]) 输出的是 1
但是 print(s0[3][0]) 输出的是 [1]
如何使 print(s0[3][0]) 输出 1?
S0 是一个包含100行的 numpy 矩阵
S0 = [[[ 1. ] [-0.91903376] [ 0.18724527]] [[ 1. ] [ 0.87834638] [-0.88794145]] [[ 1. ] [-0.75320818] [ 0.59000726]]]
上面是一个小样本 ^
回答:
花些时间阅读 numpy
基础知识。这里的关键是 shape
。你有一个3D数组:
In [122]: arr = np.arange(9).reshape(3,3,1)In [123]: arrOut[123]: array([[[0], [1], [2]], [[3], [4], [5]], [[6], [7], [8]]])In [124]: arr.shapeOut[124]: (3, 3, 1)
你可以这样索引这个数组:
In [125]: arr[:,:,0]Out[125]: array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])In [126]: _.shapeOut[126]: (3, 3)
arr[0][0][0]
可以工作,但 arr[0,0,0]
更清晰。
你也可以用 reshape
从中得到一个2D数组(注意,我用 reshape
从1D的 arange
数组创建了原始数组)。
In [127]: arr.reshape(3,3)Out[127]: array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
这种显示(以及输入)方式,带有所有的 [] 和逗号,对于查看数组来说很好,但你越早熟悉 shape
(和 reshape
),你的 numpy
编程就会越轻松。