当前位置:首页 > Python > 正文

NumPy数组添加元素方法详解 - Python数据科学教程

NumPy数组添加元素的5种方法详解

NumPy数组与Python列表不同,其大小在创建时即固定。本教程将详细讲解如何通过NumPy提供的函数实现数组元素的添加操作,包括一维和多维数组的处理方法。

一、np.append() 基础用法

在数组末尾添加元素的最简单方法:

import numpy as np

# 创建原始数组
arr = np.array([1, 2, 3])

# 在末尾添加单个元素
new_arr = np.append(arr, 4)
print(new_arr)  # 输出: [1 2 3 4]

# 添加多个元素
new_arr = np.append(arr, [5, 6, 7])
print(new_arr)  # 输出: [1 2 3 5 6 7]

注意:np.append()不会修改原数组,而是返回新数组

二、np.insert() 指定位置插入

在数组任意位置插入元素:

# 在索引2的位置插入元素
arr = np.array([10, 20, 30, 40])
new_arr = np.insert(arr, 2, 25)
print(new_arr)  # 输出: [10 20 25 30 40]

# 在多个位置插入元素
new_arr = np.insert(arr, [1, 3], [15, 35])
print(new_arr)  # 输出: [10 15 20 30 35 40]

三、np.concatenate() 数组合并

合并多个数组的高效方法:

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 一维数组合并
result = np.concatenate((arr1, arr2))
print(result)  # 输出: [1 2 3 4 5 6]

# 二维数组行合并
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6]])
result = np.concatenate((matrix1, matrix2), axis=0)
print(result)
# 输出: 
# [[1 2]
#  [3 4]
#  [5 6]]

四、np.hstack() 水平堆叠

水平方向合并数组(列方向):

a = np.array([1, 2])
b = np.array([3, 4])
result = np.hstack((a, b))
print(result)  # 输出: [1 2 3 4]

# 二维数组示例
arr1 = np.array([[1], [2]])
arr2 = np.array([[3], [4]])
result = np.hstack((arr1, arr2))
print(result)
# 输出: 
# [[1 3]
#  [2 4]]

五、np.vstack() 垂直堆叠

垂直方向合并数组(行方向):

a = np.array([1, 2])
b = np.array([3, 4])
result = np.vstack((a, b))
print(result)
# 输出:
# [[1 2]
#  [3 4]]

# 二维数组示例
arr1 = np.array([[1, 2]])
arr2 = np.array([[3, 4]])
result = np.vstack((arr1, arr2))
print(result)
# 输出: 
# [[1 2]
#  [3 4]]

性能比较与使用建议

  • 小规模数据:np.append()和np.insert()更直观
  • 批量添加元素:np.concatenate()效率最高
  • 多维数组操作:优先使用hstack/vstack明确维度方向
  • 重要提示:避免在循环中使用append/insert,会多次复制数组导致性能下降

最佳实践示例:

# 高效添加多个元素的方法
original = np.array([1, 2, 3])
to_add = np.array([4, 5, 6])

# 推荐方法
result = np.concatenate((original, to_add))

# 不推荐方法(循环中性能差)
result = original
for x in to_add:
    result = np.append(result, x)

发表评论