【问题标题】:How to index first axis of 3D array into 1D array如何将 3D 数组的第一轴索引到 1D 数组
【发布时间】:2023-02-21 10:31:54
【问题描述】:

python 和一般编码的新手...

我有一个形状为 (62, 200, 400) 的 3D 数组。我想创建一个只有 axis = 0 值的新一维数组,我相信这是我原始 3D 数组中的 62 个元素。

我该怎么做呢?到目前为止,我只能通过使用大小 (62, 0, 0) 进行索引来创建新的 3D 数组。

谢谢!

这就是我对代码的理解,

new_array = data[:,:0,:0]

【问题讨论】:

  • data[:,0,0] 确实返回长度为 62 的一维数组。但是 data[:,156,345] 也是如此
  • 将此问题视为 3x3 魔方可能更容易。当你说你想要一个 axis=0 的一维数组时,你想要立方体的哪一部分?您是否正在寻找一张脸上的单行?特定面上的所有值(即扁平的二维对象)?

标签: python numpy multidimensional-array indexing numpy-slicing


【解决方案1】:

在 2D 中更容易将其可视化。看看这个形状为 (4, 3) 的数组:

import numpy as np

a = np.array([[ 1,  2,  3],
              [ 4,  5,  6],
              [ 7,  8,  9],
              [10, 11, 12]])

取切片 a[:,0] 将返回沿所选轴的一维数组:

>>> a[:,0]

array([ 1,  4,  7, 10])

正如切片a[:,1]

>>> a[:,1]

array([ 2,  5,  8, 11])

切片a[:,2]

>>> a[:,2]

array([ 3,  6,  9, 12])

所以你不能真的说沿轴 0 只有 4 个值,因为你可以看到存储在数组中的所有 12 个值都沿轴 0 放置。数组的 shape 描述了它的轴的长度,而不是其中存储了多少值。

因此,如果您真的想要沿轴 0 的 12 个可用值中的 4 个值,则必须决定您想要哪个切片。如果这不是您想要实现的目标,请随时编辑您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 2018-01-05
    • 2020-04-16
    • 2015-11-12
    相关资源
    最近更新 更多