第三章:ndarray 的创建


文档摘要

第三章:ndarray 的创建 第三章:ndarray 的创建 NumPy 的核心是 (n-dimensional array object),它是一个高效的多维数组容器,用于存储和处理数值数据。要使用 NumPy,首先需要创建 对象。本章将深入探讨创建 的各种方法。 3.1 从 Python 列表或元组创建 这是最基本也是最常用的创建 的方法。 代码实践: 内容详解: 函数接受一个列表或元组作为输入,并尝试创建一个新的 。 NumPy 会自动推断数组的数据类型,但也可以使用 参数显式指定。 当创建多维数组时,输入必须是具有相同长度的列表的列表(或元组的元组)。否则,NumPy 会创建一个包含 Python 对象(例如列表)的 ,这通常不是期望的行为,并且会降低性能。

第三章:ndarray 的创建

第三章:ndarray 的创建

NumPy 的核心是 ndarray(n-dimensional array object),它是一个高效的多维数组容器,用于存储和处理数值数据。要使用 NumPy,首先需要创建 ndarray 对象。本章将深入探讨创建 ndarray 的各种方法。

3.1 从 Python 列表或元组创建

这是最基本也是最常用的创建 ndarray 的方法。

代码实践:

import numpy as np # 从 Python 列表创建 list_data = [1, 2, 3, 4, 5] arr_from_list = np.array(list_data) print("From List:\n", arr_from_list) print("Data Type:", arr_from_list.dtype) # 默认数据类型 # 从 Python 元组创建 tuple_data = (6, 7, 8, 9, 10) arr_from_tuple = np.array(tuple_data) print("\nFrom Tuple:\n", arr_from_tuple) # 创建二维数组 list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] arr_2d = np.array(list_of_lists) print("\n2D Array:\n", arr_2d) # 指定数据类型 arr_float = np.array(list_data, dtype=np.float64) print("\nFloat Array:\n", arr_float) print("Data Type:", arr_float.dtype) # 不同长度的列表将创建object类型的ndarray list_of_lists_diff_len = [[1, 2, 3], [4, 5], [7, 8, 9, 10]] arr_diff_len = np.array(list_of_lists_diff_len) print("\nArray with different length lists:\n", arr_diff_len) print("Data Type:", arr_diff_len.dtype)

内容详解:

  • np.array() 函数接受一个列表或元组作为输入,并尝试创建一个新的 ndarray

  • NumPy 会自动推断数组的数据类型,但也可以使用 dtype 参数显式指定。

  • 当创建多维数组时,输入必须是具有相同长度的列表的列表(或元组的元组)。否则,NumPy 会创建一个包含 Python 对象(例如列表)的 ndarray,这通常不是期望的行为,并且会降低性能。

Graph TD 图示:

3.2 使用 NumPy 内置函数创建

NumPy 提供了许多内置函数,用于创建具有特定形状和初始值的 ndarray

代码实践:

import numpy as np # 创建全零数组 zeros_arr = np.zeros((3, 4)) # 3 行 4 列 print("Zeros Array:\n", zeros_arr) # 创建全一数组 ones_arr = np.ones((2, 3), dtype=np.int32) print("\nOnes Array:\n", ones_arr) # 创建未初始化数组 (值是内存中的随机值) empty_arr = np.empty((2, 2)) print("\nEmpty Array:\n", empty_arr) # 创建单位矩阵 identity_matrix = np.eye(3) print("\nIdentity Matrix:\n", identity_matrix) # 创建对角矩阵 diag_matrix = np.diag([1, 2, 3]) print("\nDiagonal Matrix:\n", diag_matrix)

内容详解:

  • np.zeros(shape) 创建一个给定形状的全零数组。

  • np.ones(shape) 创建一个给定形状的全一数组。

  • np.empty(shape) 创建一个给定形状的未初始化数组。这些数组的值是内存中的随机值,因此在使用前需要小心。

  • np.eye(N) 创建一个 N x N 的单位矩阵(对角线为 1,其余为 0)。

  • np.diag(v) 创建一个对角矩阵,其中对角线上的元素是 v 中的元素。

Graph TD 图示:

3.3 使用 arangelinspace 创建数值序列

arangelinspace 函数用于创建等间隔的数值序列。

代码实践:

import numpy as np # 使用 arange 创建 arr_arange = np.arange(10) # 0 到 9 print("Arange Array:\n", arr_arange) arr_arange_step = np.arange(0, 20, 2) # 0 到 18,步长为 2 print("\nArange Array with Step:\n", arr_arange_step) # 使用 linspace 创建 arr_linspace = np.linspace(0, 1, 5) # 0 到 1,包含 5 个等间隔的数 print("\nLinspace Array:\n", arr_linspace)

内容详解:

  • np.arange(start, stop, step) 创建一个从 startstop(不包含)的数组,步长为 step。如果只提供一个参数,则默认为 stopstart 为 0,step 为 1。

  • np.linspace(start, stop, num) 创建一个从 startstop(包含)的数组,包含 num 个等间隔的数。

Graph TD 图示:

3.4 使用随机数生成函数创建

NumPy 的 random 模块提供了各种随机数生成函数,用于创建包含随机数的 ndarray

代码实践:

import numpy as np # 创建 0 到 1 之间的随机数数组 rand_arr = np.random.rand(2, 3) # 2 行 3 列 print("Random Array (0-1):\n", rand_arr) # 创建服从标准正态分布的随机数数组 randn_arr = np.random.randn(3, 3) print("\nRandom Array (Normal Distribution):\n", randn_arr) # 创建指定范围内的随机整数数组 randint_arr = np.random.randint(1, 10, size=(2, 4)) # 1 到 9 之间的整数 print("\nRandom Integer Array:\n", randint_arr)

内容详解:

  • np.random.rand(shape) 创建一个给定形状的数组,其中包含 0 到 1 之间的均匀分布的随机数。

  • np.random.randn(shape) 创建一个给定形状的数组,其中包含服从标准正态分布(均值为 0,标准差为 1)的随机数。

  • np.random.randint(low, high, size) 创建一个给定形状的数组,其中包含 low(包含)到 high(不包含)之间的随机整数。

Graph TD 图示:

3.5 从已有的数组创建

可以通过复制或转换已有的数组来创建新的 ndarray

代码实践:

import numpy as np # 从已有的数组创建 existing_arr = np.array([1, 2, 3, 4, 5]) # 复制数组 copied_arr = np.copy(existing_arr) print("Copied Array:\n", copied_arr) # 转换数组类型 float_arr = existing_arr.astype(np.float64) print("\nFloat Array:\n", float_arr) # 改变数组形状 reshaped_arr = existing_arr.reshape((5, 1)) print("\nReshaped Array:\n", reshaped_arr)

内容详解:

  • np.copy(arr) 创建一个数组的深拷贝。修改拷贝后的数组不会影响原始数组。

  • arr.astype(dtype) 创建一个具有指定数据类型的新数组。

  • arr.reshape(shape) 创建一个具有新形状的新数组,但不改变原始数组的数据。

Graph TD 图示:

3.6 从文件中读取数据创建

NumPy 提供了函数用于从文件中读取数据并创建 ndarray

代码实践:

import numpy as np # 创建一个示例数据文件 data = np.array([[1, 2, 3], [4, 5, 6]]) np.savetxt('data.txt', data, delimiter=',') # 从文件中读取数据 loaded_data = np.loadtxt('data.txt', delimiter=',') print("Loaded Data:\n", loaded_data)

内容详解:

  • np.loadtxt(filename, delimiter) 从文本文件中加载数据,delimiter 指定分隔符。

  • np.savetxt(filename, array, delimiter) 将数组保存到文本文件中。

Graph TD 图示:

3.7 总结

本章介绍了创建 ndarray 的各种方法,包括从 Python 列表或元组创建、使用 NumPy 内置函数创建、使用 arangelinspace 创建数值序列、使用随机数生成函数创建、从已有的数组创建以及从文件中读取数据创建。选择哪种方法取决于具体的需求和数据来源。 掌握这些方法对于高效地使用 NumPy 进行数值计算至关重要。


发布者: 作者: 转发
评论区 (0)
U