Ndarray dtype多维数组-如何选择每个数组元素的第一个元素?

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

我有一个多维 ndarray 元组,它进一步包含两个元素 - 第一个是另一个数组,第二个是一个字典。我正在寻找每个元组的第一个元素。基本上制作另一个具有相同形状的数组,但具有每个元组的第一个元素。这是一个示例数据结构:

a = np.array([[([1,2], {"a":1}), ([12,243], {"d":1})],
              [([32,24], {"b":1}), ([13,22], {"c":1})]], dtype=object)

我需要来自

a
的以下数组:

b  = np.array([[[1,2], [12, 243]], 
               [[32, 24], [13, 22]]])

我知道这可以使用嵌套 for 循环来完成,但我想避免这种情况,因为它可以有超过 2 个维度。我也尝试过使用 nditer,但我不断收到错误,并且不知道如何处理。非常感谢任何帮助。

python numpy-ndarray
2个回答
0
投票
a = np.array([[([1,2], {"a":1}), ([12,243], {"d":1})],
              [([32,24], {"b":1}), ([13,22], {"c":1})]], dtype=object)

b = a[:,:,0]

print(b)

array([[list([1, 2]), list([12, 243])],
       [list([32, 24]), list([13, 22])]], dtype=object)

0
投票

代码片段:

shape = a.shape
b = a[:, :, 0] # the first element from each tuple
b = np.array(b.tolist())

输出:

[[[  1   2]
  [ 12 243]]

 [[ 32  24]
  [ 13  22]]]
© www.soinside.com 2019 - 2024. All rights reserved.