1.list的extend和append方法
在Python中,list
类型有两个常用的方法,即 extend
和 append
,它们用于向列表中添加元素,但有一些重要的区别。
append
方法:
append
方法用于将一个元素添加到列表的末尾。append
操作是就地修改列表,没有返回值。my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # 输出: [1, 2, 3, 4]
another_list = [5, 6]
my_list.append(another_list)
print(my_list) # 输出: [1, 2, 3, 4, [5, 6]]
extend
方法:
extend
方法用于将一个可迭代对象的元素逐一添加到列表的末尾。append
不同,extend
将可迭代对象中的元素逐一添加到列表,而不是将整个对象作为一个单独的元素添加。my_list = [1, 2, 3]
another_list = [4, 5, 6]
my_list.extend(another_list)
print(my_list) # 输出: [1, 2, 3, 4, 5, 6]
总结:
append
时,你添加的是一个单一的元素,而 extend
允许你添加多个元素。append
是在列表的末尾添加元素,而 extend
是将多个元素逐一追加到列表的末尾。2.numpy 的append方法
**(1)**在NumPy中,numpy.append
函数用于将值附加到数组的末尾。与Python的list
对象的append
方法相似,但有一些细微的区别。
以下是 numpy.append
的基本用法:
import numpy as np
# 创建一个numpy数组
arr = np.array([1, 2, 3])
# 使用numpy.append将值附加到数组的末尾
new_arr = np.append(arr, 4)
print("Original Array:", arr)
print("New Array:", new_arr)
输出:
Array: [1 2 3]
New Array: [1 2 3 4]
请注意,numpy.append
不会修改原始数组,而是返回一个新的数组,该数组包含原始数组的副本和附加的值。
另外,numpy.append
还可以用于在指定轴上连接两个数组:
import numpy as np
# 创建两个numpy数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[7, 8, 9]])
# 在指定轴上连接两个数组
new_arr = np.append(arr1, arr2, axis=0)
print("Original Array 1:")
print(arr1)
print("Original Array 2:")
print(arr2)
print("New Array:")
print(new_arr)
输出:
Array 1:
[[1 2 3]
[4 5 6]]
Original Array 2:
[[7 8 9]]
New Array:
[[1 2 3]
[4 5 6]
[7 8 9]]
在这个例子中,axis=0
表示沿着行的方向进行连接。
**(2)**ps:如果没有指定 axis
参数,默认情况下 numpy.append
将会展平数组并返回一个包含所有元素的一维数组。这意味着数组将被按照 C-style 顺序(按行)展平,然后在末尾添加新值。
以下是一个没有指定 axis
参数的例子:
import numpy as np
# 创建一个二维numpy数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 使用numpy.append在默认情况下连接一个新的一维数组
new_arr = np.append(arr, [7, 8, 9])
print("Original Array:")
print(arr)
print("New Array:")
print(new_arr)
输出:
Original Array:
[[1 2 3]
[4 5 6]]
New Array:
[1 2 3 4 5 6 7 8 9]
在这个例子中,arr
是一个二维数组,而 numpy.append
在没有指定 axis
参数的情况下,默认按行展平了数组,并将新数组附加到了末尾。
**(3)**当 numpy.append
函数的 axis
参数设置为 1
时,表示在水平方向上连接(按列连接)数组。这意味着它将会沿着数组的第二个轴(轴的索引从0开始)连接数组。
以下是一个使用 axis=1
的示例:
import numpy as np
# 创建两个二维numpy数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[7, 8], [9, 10]])
# 在水平方向上连接两个数组
new_arr = np.append(arr1, arr2, axis=1)
print("Original Array 1:")
print(arr1)
print("Original Array 2:")
print(arr2)
print("New Array:")
print(new_arr)
输出:
Original Array 1:
[[1 2 3]
[4 5 6]]
Original Array 2:
[[ 7 8]
[ 9 10]]
New Array:
[[ 1 2 3 7 8]
[ 4 5 6 9 10]]
在这个例子中,arr1
和 arr2
在水平方向上连接起来,形成一个新的数组 new_arr
。axis=1
表示连接发生在列的方向上。
总结一下:
axis=0
表示在垂直方向上连接(按行连接)数组。axis=1
表示在水平方向上连接(按列连接)数组。**(4)**如果在使用 numpy.append
时遇到问题,可能是由于数据的维度不匹配或者使用方式不正确导致的。
数据类型不匹配: numpy.append
要求待附加的值具有与原始数组相同的数据类型。如果数据类型不匹配,可能会引发错误。
import numpy as np
arr = np.array([1, 2, 3])
new_value = '4' # 数据类型不匹配,字符串与整数
new_arr = np.append(arr, new_value) # 可能引发错误
维度不匹配: 如果你在没有指定 axis
参数的情况下附加数组,确保它们的维度是兼容的。
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
new_value = [7, 8, 9, 10] # 维度不匹配
new_arr = np.append(arr, new_value) # 可能引发错误
未保存返回值: numpy.append
返回一个新的数组,如果你没有将其保存到变量中,可能会导致数据丢失。
import numpy as np
arr = np.array([1, 2, 3])
new_value = 4
np.append(arr, new_value) # 没有保存返回值,新的数组丢失