从python中的嵌套数组访问元素

skr*_*rat 3 python arrays numpy

假设我有以下数组

test=np.asarray([
    [[ 0.26139668,  0.271985  ,  0.89647514,  0.10352486],
    [ 0.30488212,  0.31384717,  0.84089744,  0.15910256],
    [ 0.32112577,  0.32958562,  0.79216727,  0.20783273]],
    [[ 0.6017121 ,  0.60530397,  0.49432092,  0.50567908],
    [ 0.61610247,  0.61954059,  0.49649699,  0.50350301],
    [ 0.63149809,  0.63477652,  0.49945702,  0.50054298]],
    [[ 0.6017121 ,  0.60530397,  0.49432092,  0.50567908],
    [ 0.61610247,  0.61954059,  0.49649699,  0.50350301],
    [ 0.63149809,  0.63477652,  0.49945702,  0.50054298]],
    [[ 0.6017121 ,  0.60530397,  0.49432092,  0.50567908],
    [ 0.61610247,  0.61954059,  0.49649699,  0.50350301],
    [ 0.63149809,  0.63477652,  0.49945702,  0.50054298]]])
Run Code Online (Sandbox Code Playgroud)

现在我正在寻找的结果位于test. 所以基本上我需要test[0][:,0]test[1][:,0]...最后test[3][:,0]

我确定这可以在没有 for 循环的情况下完成,或者不?

由于符号[:]应该意味着从头到尾的所有元素,我什至尝试过test[:][:,0]。那没有用。test[:,0][:,0]也好不到哪里去。

那么,for 循环的替代方案是什么?


结果应该是:

    [0.26139668, 0.30488212, 0.32112577, 0.6017121, 0.61610247, 0.63149809,
 0.6017121, 0.61610247, 0.63149809,0.6017121, 0.61610247, 0.63149809]
Run Code Online (Sandbox Code Playgroud)

或者任何类似的东西。(我只需要整个数组中的那些数字)。

Kas*_*mvd 6

您有一个 3D 数组,因此只需将 0 传递给第三个轴:

In [9]: test[:, :, 0]
Out[9]: 
array([[ 0.26139668,  0.30488212,  0.32112577],
       [ 0.6017121 ,  0.61610247,  0.63149809],
       [ 0.6017121 ,  0.61610247,  0.63149809],
       [ 0.6017121 ,  0.61610247,  0.63149809]])
Run Code Online (Sandbox Code Playgroud)

如果您想将它们全部放在一个数组中,您可以只ravel使用切片:

In [11]: test[:, :, 0].ravel()
Out[11]: 
array([ 0.26139668,  0.30488212,  0.32112577,  0.6017121 ,  0.61610247,
        0.63149809,  0.6017121 ,  0.61610247,  0.63149809,  0.6017121 ,
        0.61610247,  0.63149809])
Run Code Online (Sandbox Code Playgroud)