由ndarray的列组成的1d数组。

问题描述 投票:0回答:1

这是我手头的数组。

[array([[[ 4, 9,  1, -3],
         [-2, 0, 8, 6],
         [ 1, 3, 7,  9 ],
         [ 2,  5, 0, -7],
         [-1, -6, -5, -8]]]),
 array([[[ 0,  2, -1, 6 ],
         [9,  8,  0,  3],
         [ -1, 2, 5, -4],
         [0,  5, 9, 6],
         [ 6, 2,  9, 4]]]),
 array([[[ 1,  2,  0, 9],
         [3,  4, 8, -1],
         [5,  6,  9,  0],
         [ 7, 8, -3, -],
         [9, 0,  8, -2]]])]

但我们的目标是获得数组 A 从嵌套数组的第一列。B 从嵌套数组的第二列。C从嵌套数组的第三列等。

这样,。

A = array([4, -2, 1, 2, -1, 0, 9, -1 ,0, 6, 1, 3, 5, 7, 9])
B = array([9, 0, 3, 5, -6, 2, 8, 2, 5, 2, 2,, 4, 6, 8, 0])

我应该怎么做?

python arrays numpy multidimensional-array
1个回答
1
投票

你可以用一个 hstack() 并使用 squeeze() 来删除额外的维度。有了它,你可以使用常规的numpy索引来拉出列(或者其他任何你想要的东西)。

import numpy as np

l = [np.array([[[ 4, 9,  1, -3],
         [-2, 0, 8, 6],
         [ 1, 3, 7,  9 ],
         [ 2,  5, 0, -7],
         [-1, -6, -5, -8]]]),
     np.array([[[ 0,  2, -1, 6 ],
         [9,  8,  0,  3],
         [ -1, 2, 5, -4],
         [0,  5, 9, 6],
         [ 6, 2,  9, 4]]]),
     np.array([[[ 1,  2,  0, 9],
         [3,  4, 8, -1],
         [5,  6,  9,  0],
         [ 7, 8, -3, -1],
         [9, 0,  8, -2]]])]


arr = np.hstack(l).squeeze()

A = arr[:,0]
print(A)
# [ 4 -2  1  2 -1  0  9 -1  0  6  1  3  5  7  9]

B = arr[:,1]
print(B)
#[ 9  0  3  5 -6  2  8  2  5  2  2  4  6  8  0]
# etc...

1
投票

IIUC,

l = [np.array([[[ 4, 9,  1, -3],
         [-2, 0, 8, 6],
         [ 1, 3, 7,  9 ],
         [ 2,  5, 0, -7],
         [-1, -6, -5, -8]]]),
 np.array([[[ 0,  2, -1, 6 ],
         [9,  8,  0,  3],
         [ -1, 2, 5, -4],
         [0,  5, 9, 6],
         [ 6, 2,  9, 4]]]),
 np.array([[[ 1,  2,  0, 9],
         [3,  4, 8, -1],
         [5,  6,  9,  0],
         [ 7, 8, -3, -9],
         [9, 0,  8, -2]]])]

a = np.hstack([i[0][:, 0] for i in l])
b = np.hstack([i[0][:, 1] for i in l])

产出:

array([ 4, -2,  1,  2, -1,  0,  9, -1,  0,  6,  1,  3,  5,  7,  9])
array([ 9,  0,  3,  5, -6,  2,  8,  2,  5,  2,  2,  4,  6,  8,  0])
© www.soinside.com 2019 - 2024. All rights reserved.