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