·  阅读

摘要: 调用Numpy库的append函数为: numpy.append(given_array, elements_to_be_appended, axis) ,将给定的数组沿着特定的轴进行扩展。

扩展数组的其他方法包括:(i)使用 vstack column_stack 辅助函数。(ii) numpy.insert 函数。

问题的提出

给定一个Numpy数组; 你将如何沿着行和列扩展给定的数组的值?

例子。 考虑下面这个数组-

import numpy as np
arr = np.array([[1, 2], [3, 4]])
print(arr)

问题:你 将如何在数组中增加一个额外的行和列,从而使预期的输出为。

[[1 2 7]
 [3 4 8]
 [5 6 9]]

你想成为一个NumPy大师吗?请查看我们的互动式谜题书 咖啡时间 NumPy并提高你的数据科学技能!(亚马逊链接在新标签中打开。)

方法1:使用numpy.append()

  • 使用numpy.append(given_array, elements_to_be_appended, axis) ,返回一个扩展的数组,其元素跨越指定的轴。
  • NumPy的[append()](https://numpy.org/doc/stable/reference/generated/numpy.append.html)方法将数值追加到数组的末端。可选的axis 参数允许你沿指定的轴追加数组。当axis的值为0时,元素将被跨行追加,当axis的值为1时,元素将被跨列追加。
  • 解释一下。

  • 为了将给定的数组扩展到某一行,调用numpy.append() 方法,并将给定的数组作为输入,然后是要添加到现有数组中的行元素。最后,为了指定要将这些值追加到某一行,将axis的值输入为0
  • 要将给定的数组扩展到一列,请调用numpy.append() 方法,并将给定的数组作为输入,然后是要添加到现有数组中的列元素。最后,要指定你想把这些值追加到一列,并把axis的值输入为1
  • import numpy as np
    arr = np.array([[1, 2], [3, 4]])
    # add elements row-wise
    arr = np.append(arr, [[5, 6]], 0)
    # add elements column-wise
    arr = np.append(arr, [[7], [8], [9]], 1)
    print(arr)
    
    [[1 2 7]
     [3 4 8]
     [5 6 9]]
    

    方法2:沿行和列堆叠元素

  • 调用np.vstack([given_array, [elements_to_be_stacked]]) ,沿行扩展给定的数组。
  • 调用np.column_stack([given_array, [elements_to_be_stacked]]) ,沿列扩展给定的数组。
  • NumPy的vstack() 方法需要一个元组参数,并将数组按顺序垂直堆叠(从行开始)。这就像将形状为*(N,)的一维数组重塑为(1,N)*后沿第一轴串联。
  • numpy.column_stack() 方法将一维数组作为列堆叠到一个二维数组中。它需要一个元组参数并按顺序堆叠数组(按列)。
  • import numpy as np
    arr = np.array([[1, 2], [3, 4]])
    # add elements row-wise
    arr = np.vstack([arr, [5, 6]])
    # add elements column-wise
    arr = np.column_stack([arr, [7, 8, 9]])
    print(arr)
    
    [[1 2 7]
     [3 4 8]
     [5 6 9]]
    

    方法3:使用numpy.insert

    numpy.insert() 函数用于在一个numpy数组中沿着给定的轴插入数值。

    调用np.insert() 方法并输入以下参数:(i)给定的数组,(ii)你想插入数值的列号或行号,(iii)你想在数组中插入的数值,(iv)你想沿着插入数值的轴。当axis=0 ,数值将沿着行插入,当axis=1 ,数值将沿着列插入。

    import numpy as np
    arr = np.array([[1, 2], [3, 4]])
    # add elements row-wise (insert before row 2)
    arr = np.insert(arr, 2, values=[5, 6], axis=0)
    # add elements column-wise (insert before column 2)
    arr = np.insert(arr, 2, values=[7, 8, 9], axis=1)
    print(arr)
    

    解释一下。

  • 要在第三行插入values=[5,6] ,调用插入方法为。np.insert(arr, 2, values=[5, 6], axis=0).第二个属性(即vaule 2)确保值将在列索引2处插入,axis=0 表示值将沿着行插入。
  • 要在第三列插入values=[7, 8, 9] ,请调用插入方法。np.insert(arr, 2, values=[7, 8, 9], axis=1).第二个属性(即vaule 2)确保值将在行索引2处插入,axis=0 表示值将沿列插入。
  • 方法4:串联两个二维数组

    注意:NumPy[concatenate()](https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html)方法是沿着一个现有的轴连接一连串的数组。前面的几个逗号分隔的数组参数被连接。如果你使用轴参数,你可以指定数组应该沿着哪个轴被连接。例如,np.concatenate(a, b, axis=0) ,沿第一轴连接数组,np.concatenate(a, b, axis=None) ,连接扁平化的数组。

  • 调用np.concatenate((arr_a, arr_b), axis=1) ,将两个给定的数组沿列连接起来。
  • 调用np.concatenate((arr_a, arr_b), axis=0) ,将两个给定的数组沿行连接起来。
  • import numpy as np
    arr_a = np.array([[1, 2], [3, 4]])
    arr_b = np.array([[5, 6], [7, 8]])
    print('merge across columns: ')
    arr = np.concatenate((arr_a, arr_b), axis=1)
    print(arr)
    print('merge across rows: ')
    arr = np.concatenate((arr_a, arr_b), axis=0)
    print(arr)
    
    merge across columns: 
    [[1 2 5 6]
     [3 4 7 8]]
    merge across rows: 
    [[1 2]
     [3 4]
     [5 6]
     [7 8]]
    

    还有其他合并两个给定数组的方法,包括我们上面已经学到的方法。要想了解更多这方面的知识,请阅读下面的教程。如何串联两个NumPy数组?

    在这篇文章中,我们已经学到了多达四种扩展给定数组的方法。请自由使用适合你要求的选项。我希望这篇文章能帮助你。请订阅并继续关注更多有趣的教程和讨论。

    分类:
    代码人生
    标签: