向 NumPy 数组添加列

向 NumPy 数组添加列

参考:add column to np array

NumPy 是一个强大的 Python 库,广泛用于大规模数据集的数学运算。它提供了一个高性能的多维数组对象,以及用于操作这些数组的工具。在数据处理和科学计算中,经常需要对数组进行修改,比如添加新的列。本文将详细介绍如何在 NumPy 数组中添加列,包括不同的方法和技术,以及具体的代码示例。

1. 使用 numpy.column_stack

numpy.column_stack 是一个用于将一维或二维数组作为列堆叠到一个二维数组中的函数。这是添加列的最直接方法之一。

示例代码 1

import numpy as np

# 创建一个原始数组
original_array = np.array([[1, 2], [3, 4]])
new_column = np.array([5, 6])

# 使用 column_stack 添加列
result_array = np.column_stack((original_array, new_column))
print(result_array)

Output:

向 NumPy 数组添加列

2. 使用 numpy.hstack

numpy.hstack 用于水平堆叠序列中的数组。如果使用时数组是一维的,它们首先会被转换成二维数组,然后再水平堆叠。

示例代码 2

import numpy as np

# 创建一个原始数组
original_array = np.array([[1, 2], [3, 4]])
new_column = np.array([[5], [6]])

# 使用 hstack 添加列
result_array = np.hstack((original_array, new_column))
print(result_array)

Output:

向 NumPy 数组添加列

3. 使用 numpy.append

numpy.append 函数可以沿指定轴向数组添加元素。如果要添加列,需要设置 axis=1

示例代码 3

import numpy as np

# 创建一个原始数组
original_array = np.array([[1, 2], [3, 4]])
new_column = np.array([5, 6])

# 使用 append 添加列
result_array = np.append(original_array, new_column[:, np.newaxis], axis=1)
print(result_array)

Output:

向 NumPy 数组添加列

4. 使用 numpy.insert

numpy.insert 允许在给定索引处沿指定轴插入值。这可以用来在数组中的特定位置添加列。

示例代码 4

import numpy as np

# 创建一个原始数组
original_array = np.array([[1, 2], [3, 4]])
new_column = np.array([5, 6])

# 使用 insert 添加列
result_array = np.insert(original_array, 1, new_column, axis=1)
print(result_array)

Output:

向 NumPy 数组添加列

5. 使用 numpy.concatenate

numpy.concatenate 可以用来沿一个现有轴连接数组序列。

示例代码 5

import numpy as np

# 创建一个原始数组
original_array = np.array([[1, 2], [3, 4]])
new_column = np.array([[5], [6]])

# 使用 concatenate 添加列
result_array = np.concatenate((original_array, new_column), axis=1)
print(result_array)

Output:

向 NumPy 数组添加列

6. 使用切片和赋值

可以通过扩展数组的方式,使用切片直接在原数组上添加列。

示例代码 6

import numpy as np

# 创建一个原始数组
original_array = np.array([[1, 2], [3, 4]])
new_column = np.array([5, 6])

# 扩展数组并添加新列
result_array = np.zeros((original_array.shape[0], original_array.shape[1] + 1))
result_array[:, :-1] = original_array
result_array[:, -1] = new_column
print(result_array)

Output:

向 NumPy 数组添加列

7. 使用 numpy.lib.stride_tricks.as_strided

这是一个高级技巧,可以在不复制数据的情况下,通过修改数组的步长来添加列。

示例代码 7

import numpy as np
from numpy.lib.stride_tricks import as_strided

# 创建一个原始数组
original_array = np.array([[1, 2], [3, 4]])
new_column = np.array([5, 6])

# 计算新的步长
new_shape = (original_array.shape[0], original_array.shape[1] + 1)
new_strides = (original_array.strides[0], original_array.strides[1])

# 使用 as_strided 添加列
extended_array = as_strided(original_array, shape=new_shape, strides=new_strides)
extended_array[:, -1] = new_column
print(extended_array)

Output:

向 NumPy 数组添加列

8. 使用 numpy.pad

numpy.pad 可以用来给数组添加边界填充,也可以用来添加列。

示例代码 8

import numpy as np

# 创建一个原始数组
original_array = np.array([[1, 2], [3, 4]])
new_column = np.array([5, 6])

# 使用 pad 添加列
result_array = np.pad(original_array, ((0, 0), (0, 1)), mode='constant', constant_values=0)
result_array[:, -1] = new_column
print(result_array)

Output:

向 NumPy 数组添加列

9. 使用 numpy.broadcast_to

numpy.broadcast_to 可以将数组广播到新形状,这是一种高级的数组操作技巧。

示例代码 9

import numpy as np

# 创建一个原始数组
original_array = np.array([[1, 2], [3, 4]])
new_column = np.array([5, 6])

# 广播新列
new_column_broadcasted = np.broadcast_to(new_column[:, np.newaxis], (2, 1))

# 使用 hstack 添加广播后的列
result_array = np.hstack((original_array, new_column_broadcasted))
print(result_array)

Output:

向 NumPy 数组添加列

10. 使用 numpy.vstacknumpy.reshape

虽然 numpy.vstack 通常用于垂直堆叠,但可以与 numpy.reshape 结合使用来添加列。

示例代码 10

import numpy as np

# 创建一个原始数组
original_array = np.array([[1, 2], [3, 4]])
new_column = np.array([5, 6])

# 重塑新列并使用 vstack 添加
new_column_reshaped = new_column.reshape(2, 1)
result_array = np.hstack((original_array, new_column_reshaped))
print(result_array)

Output:

向 NumPy 数组添加列

以上是在 NumPy 数组中添加列的十种不同方法,每种方法都有其适用场景和优缺点。在实际应用中,选择最合适的方法可以有效提高代码的性能和可读性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程