【问题标题】:How to I extract the 2nd element in this numpy array, where the 2nd element of each row is another numpy array如何提取此 numpy 数组中的第二个元素,其中每行的第二个元素是另一个 numpy 数组
【发布时间】:2019-08-30 21:16:21
【问题描述】:

这里是示例 numpy 数组

new2 = np.array([[0, np.array([ 4928722,  3922609, 14413953, 10103423,  8948498])],
       [1,
        np.array([12557217,  5572869, 13415223,  2532000, 14609022,  9830632,
        9800679,  7504595, 10752682])],
       [2,
        np.array([10458710,  7176517, 10268240,  4173086,  8617671,  4674075,
       12580461,  2434641,  3694004,  9734870,  1314108,  8879955,
        6597761,  7034485,  3008940,  9816877,  1748801, 10159466,
        2745090, 14842579,   788308,  5984365])],
       [62711, np.array([ 6159359,  5003282, 11818909, 11760670])],
       [62712,
        np.array([ 4363069,  8566447,  9547966, 14554871,  2108131, 12207856,
       14840255, 13087558])],
       [62713,
        np.array([11252023,  8710787,  4233645, 11415316, 13888594,  7410770,
       13672430,  6677251, 10431890,  3447966, 12675925,   729773])]] )

我只想提取每行中的第二个元素;变长的numpy数组。我希望这些不同长度的 numpy 数组位于它自己的 numpy 数组中。

我试过这样做

new2[:][1]

这通常意味着包含所有行索引,列索引为 1。但由于某种原因,它的结果与 new2[1] 完全相同。结果是

array([1,
       array([12557217,  5572869, 13415223,  2532000, 14609022,  9830632,
        9800679,  7504595, 10752682])], dtype=object)

只有一行,其中包含 int 和 numpy 数组。

【问题讨论】:

  • new2的形状是什么?
  • 在最小样本中,有 3 行,但在我的实际示例中,我使用了 1400 万行。每行有两个元素。第一个元素的大小为 1。第二个元素随每一行变化,从 2 到 200。
  • new2[:, 1] 不工作吗?
  • 它确实有效,谢谢!提交作为答案,我会批准它
  • 我想看看shape,让你知道你有一个二维数组,形状像(n,2)。您似乎已经锁定了这个特定的数组布局,但没有完全理解 numpy 数组,甚至是基本的 n-d 数字数组。这是数组是具有这些嵌入式数组的对象 dtype,这会使您的任务显着复杂化。

标签: python numpy


【解决方案1】:

new2[:] 选择整个数组,这就是new[:][1] 选择第二行的原因。 arr[X,Y]arr[X][Y] 仅在 X 是数字时产生相同的结果。据我所知,使用arr[X][Y] 的唯一正当理由是,如果您想使用相同的代码支持数组和嵌套列表等。如果没有 arr[X,Y] 应该总是首选。所以使用new2[:,1]

【讨论】:

    【解决方案2】:

    为什么不只是:

    for x in new2:
        print(x[1][1])
    

    【讨论】:

    • 这将打印出可变长度数组,但我想要一个仅包含可变长度元素的 numpy 数组的表示。我想我可以使用一个循环并提取每个循环并保存到一个新变量中,但这可能需要很长时间,而且我需要创建一个新变量,这会占用额外的内存。
    猜你喜欢
    • 1970-01-01
    • 2022-11-16
    • 2020-10-02
    • 2018-12-05
    • 2019-11-07
    • 2018-06-12
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    相关资源
    最近更新 更多