【问题标题】:Numpy python array slicingNumpy python数组切片
【发布时间】:2020-12-11 20:24:15
【问题描述】:

我有一个如下所示的数组,

[[240.66666667 171.22222222 158.33333333]
 [218.66666667 134.77777778 143.33333333]
 [197.33333333 118.55555556 128.44444444]
 [195.22222222 119.33333333 126.11111111]
 [196.77777778 118.55555556 123.77777778]
 [183.11111111 111.88888889 118.88888889]
 [173.77777778 106.77777778 114.44444444]]

我想对所有行的第一列和第三列进行切片,并希望得到这个输出,

[[240.66666667 158.33333333]
 [218.66666667 143.33333333]
 [197.33333333 128.44444444]
 [195.22222222 126.11111111]
 [196.77777778 123.77777778]
 [183.11111111 118.88888889]
 [173.77777778 114.44444444]]

有人有什么想法吗?

输出截图:

【问题讨论】:

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


    【解决方案1】:

    你可以只给你想要的列,

    >>> data
    array([[240.66666667, 171.22222222, 158.33333333],
           [218.66666667, 134.77777778, 143.33333333],
           [197.33333333, 118.55555556, 128.44444444],
           [195.22222222, 119.33333333, 126.11111111],
           [196.77777778, 118.55555556, 123.77777778],
           [183.11111111, 111.88888889, 118.88888889],
           [173.77777778, 106.77777778, 114.44444444]])
    >>> data[:, [0,2]]
    array([[240.66666667, 158.33333333],
           [218.66666667, 143.33333333],
           [197.33333333, 128.44444444],
           [195.22222222, 126.11111111],
           [196.77777778, 123.77777778],
           [183.11111111, 118.88888889],
           [173.77777778, 114.44444444]])
    >>> 
    

    【讨论】:

    • 嘿!它似乎有效,但它选择了第 0 列和第 1 列!这很奇怪,但它没有选择第三个
    • 这很奇怪。您是否在第一列和第三列中指定了 [0,2],还是我们可以看到您得到的输出?
    • 刚刚编辑了带有输入反应数据的输出屏幕截图的问题。是的,我使用了 ARRAY[ : , [0,2] ]
    • 文字会更好。你能展示你所做的操作吗?因为arr[:, [0,2]] 不应该选择第一列。我能想到的唯一方法,它会选择第 1 列是当一个人做 arr[:, 0:2] 而不是 arr[:, [0, 2]]
    • @NisargDave 你能尽快报告吗,我会在 10 分钟后出去 :)
    【解决方案2】:

    您可以使用numpy.delete 函数轻松做到这一点,如下所示:

    a = np.array([[240.66666667, 171.22222222, 158.33333333],
                  [218.66666667, 134.77777778, 143.33333333],
                  [197.33333333, 118.55555556, 128.44444444],
                  [195.22222222, 119.33333333, 126.11111111],
                  [196.77777778, 118.55555556, 123.77777778],
                  [183.11111111, 111.88888889, 118.88888889],
                  [173.77777778, 106.77777778, 114.44444444]])
    
    a = np.delete(a,1,axis=1)
    

    通过那段代码,你可以得到你想要的输出。

    Output: 
    [[240.66666667 158.33333333]
     [218.66666667 143.33333333]
     [197.33333333 128.44444444]
     [195.22222222 126.11111111]
     [196.77777778 123.77777778]
     [183.11111111 118.88888889]
     [173.77777778 114.44444444]]
    

    【讨论】:

      猜你喜欢
      • 2011-08-30
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多