【问题标题】:Numpy modify each array in multidimensional array with arange [duplicate]Numpy用arange修改多维数组中的每个数组[重复]
【发布时间】:2018-02-07 09:43:32
【问题描述】:

我有一个数据集,其中包含一个形状为 (2400, 2) 的多维数组。

我希望能够获取这 2400 行中的每一行,并将它们修改为起点和终点的范围(2400 行中的每一行中的两个元素)。范围总是相同的长度(在我的例子中,长度为 60)。

例如,如果我有这样的事情:

array([[  78,   82],
       [  90, 94],
       [  102, 106]])

我的输出应该是这样的:

array([[  78, 79, 80, 81, 82],
       [  90, 91, 92, 93, 94],
       [  102, 103, 104, 105, 106]])

我能够做到这一点的唯一方法是使用 for 循环,但我试图避免循环遍历每一行,因为数据集可能会变得非常大。

谢谢!

【问题讨论】:

    标签: python arrays numpy multidimensional-array


    【解决方案1】:

    如果第二列和第一列的差总是4,那么你可以提取第一列并在其中添加一个[0,1,2,3,4]的数组:

    arr = np.array([[  78,   82],
                    [  90, 94],
                    [  102, 106]])
    
    arr[:,:1] + np.arange(5)
    Out[331]:
    array([[ 78,  79,  80,  81,  82],
           [ 90,  91,  92,  93,  94],
           [102, 103, 104, 105, 106]])
    

    【讨论】:

      【解决方案2】:

      由于所有的范围都需要同样长,我们可以在第一个条目上创建一个范围,然后为其他条目复制它。

      例如:

      x = np.array([[78, 82],
                    [90, 94],
                    [102, 106]])
      
      >>> x[:, :1] + np.arange(0, 1 + x[0, 1] - x[0, 0])
      # array([[ 78,  79,  80,  81],
      #        [ 90,  91,  92,  93],
      #        [102, 103, 104, 105]])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-19
        • 2012-02-20
        • 1970-01-01
        • 2021-01-29
        • 1970-01-01
        • 1970-01-01
        • 2020-10-04
        相关资源
        最近更新 更多