【Python numpy】创建Ndarray数组对象
@TOC
前言
NumPy(Numerical Python)是Python科学计算中一个重要的库,它提供了高性能的多维数组对象(ndarray)和丰富的数学函数,使得科学计算和数据分析更加便捷和高效。NumPy的核心是ndarray,这是一个多维数组对象,用于存储和操作大量数据。本文将介绍如何创建ndarray数组对象,为你提供一个入门到NumPy的基础。
一、numpy.array()函数
1.1 函数基本介绍
NumPy的numpy.array函数用于创建一个新的NumPy数组对象,函数的原型如下:
numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
参数说明:
object:可以是Python列表、元组、其他序列对象,或者其他支持数组接口的对象。这是创建数组的输入数据。
dtype(可选):指定数组的数据类型,如int, float, complex等。默认情况下,NumPy会根据输入数据自动确定数据类型。
copy(可选):布尔值,表示是否复制输入数据。默认为True,表示复制数据;如果设为False,则数组将引用输入数据。
order(可选):指定数组元素在内存中的排列顺序,可选值为’C’(C风格,行主序)或’F’(Fortran风格,列主序)。
subok(可选):布尔值,表示是否允许子类。如果为True,则返回一个与输入的子类相关的数组。默认为False。
ndmin(可选):指定生成的数组的最小维度。如果设置为1或更大,将会生成至少具有指定维度数的数组。
numpy.array函数的主要功能是将输入的数据对象转换为NumPy数组对象,这使得数据在NumPy中更容易进行处理、操作和分析。它可以根据提供的参数来指定数组的数据类型、是否复制数据等,以满足特定的需求。
1.2 示例代码
以下是使用不同参数形式的示例代码:
创建一个包含整数的一维数组
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
创建一个指定数据类型的一维数组
import numpy as np
arr_float = np.array([1.1, 2.2, 3.3], dtype=float)
创建一个多维数组
import numpy as np
matrix = np.array([[1, 2, 3], [4, 5, 6]])
创建一个具有最小维度要求的数组
import numpy as np
arr_ndmin = np.array([1, 2, 3], ndmin=2)
这些示例展示了如何使用numpy.array函数创建不同类型的NumPy数组,包括一维和多维数组,以及如何指定数据类型和最小维度。这个函数是NumPy中常用的函数之一,用于数据的初始化和转换。
二、numpy.empty()函数
2.1 empty()函数介绍
numpy.empty函数用于创建一个指定形状的新NumPy数组,但不对数组元素进行初始化。函数的原型如下:
numpy.empty(shape, dtype=float, order='C')
参数说明:
shape:一个整数或整数元组,指定了所需数组的形状,即数组的维度和大小。
dtype(可选):指定数组的数据类型,例如int、float、complex等。默认为float。
order(可选):指定数组元素在内存中的排列顺序,可选值为’C’(C风格,行主序)或’F’(Fortran风格,列主序)。默认为’C’。
功能:
numpy.empty函数用于创建一个新的NumPy数组,但不会初始化数组的元素。这意味着数组的元素将包含之前分配给它们的内存中的任何值,因此它们可能包含垃圾值。这对于需要快速创建具有特定形状的数组,但不需要立即初始化元素的情况非常有用。用户可以稍后手动或使用其他方法来初始化数组元素。
2.2 示例代码
以下是使用不同参数形式的示例代码:
创建一个未初始化的一维数组
import numpy as np
arr = np.empty(5)
创建一个未初始化的二维数组
import numpy as np
matrix = np.empty((3, 4))
创建一个未初始化的具有指定数据类型的数组:
import numpy as np
arr_int = np.empty(4, dtype=int)
创建一个未初始化的列主序数组
import numpy as np
arr_fortran = np.empty(3, order='F')
这些示例演示了如何使用numpy.empty函数创建未初始化的NumPy数组,包括一维和多维数组,并如何指定数据类型和内存排列顺序。这对于需要快速创建大型数组的情况非常有用,而不必担心初始化元素的值。
三、numpy.zeros()函数
3.1 zeros函数介绍
numpy.zeros函数用于创建一个指定形状的新NumPy数组,并将所有元素初始化为零。函数的原型如下:
numpy.zeros(shape, dtype=float, order='C')
参数说明:
shape:一个整数或整数元组,指定了所需数组的形状,即数组的维度和大小。
dtype(可选):指定数组的数据类型,例如int、float、complex等。默认为float。
order(可选):指定数组元素在内存中的排列顺序,可选值为’C’(C风格,行主序)或’F’(Fortran风格,列主序)。默认为’C’。
功能:
numpy.zeros函数用于创建一个新的NumPy数组,其元素被初始化为零。这对于需要快速创建一个具有特定形状的数组,其中所有元素的初始值都为零的情况非常有用。
3.2 示例代码
以下是使用不同参数形式的示例代码:
创建一个一维的以零填充的数组
import numpy as np
arr = np.zeros(5)
创建一个二维的以零填充的数组:
import numpy as np
matrix = np.zeros((3, 4))
创建一个以整数类型填充的数组:
import numpy as np
arr_int = np.zeros(4, dtype=int)
创建一个以列主序(Fortran风格)填充的数组:
import numpy as np
arr_fortran = np.zeros(3, order='F')
这些示例演示了如何使用numpy.zeros函数创建以零填充的NumPy数组,包括一维和多维数组,并如何指定数据类型和内存排列顺序。这对于需要初始化所有元素为零的情况非常有用。
四、numpy.ones()函数
4.1 ones函数介绍
numpy.ones函数用于创建一个指定形状的新NumPy数组,并将所有元素初始化为1、函数的原型如下:
numpy.ones(shape, dtype=None, order='C')
参数说明:
shape:一个整数或整数元组,指定了所需数组的形状,即数组的维度和大小。
dtype(可选):指定数组的数据类型,例如int、float、complex等。默认为None,表示数据类型为浮点数。
order(可选):指定数组元素在内存中的排列顺序,可选值为’C’(C风格,行主序)或’F’(Fortran风格,列主序)。默认为’C’。
功能:
numpy.ones函数用于创建一个新的NumPy数组,其元素被初始化为1。这对于需要快速创建一个具有特定形状的数组,其中所有元素的初始值都为1的情况非常有用。
4.2 示例代码
以下是使用不同参数形式的示例代码:
创建一个一维的以1填充的数组
import numpy as np
arr = np.ones(5)
创建一个二维的以1填充的数组
import numpy as np
matrix = np.ones((3, 4))
创建一个以整数类型填充的数组
import numpy as np
arr_int = np.ones(4, dtype=int)
创建一个以列主序(Fortran风格)填充的数组:
import numpy as np
arr_fortran = np.ones(3, order='F')
这些示例演示了如何使用numpy.ones函数创建以1填充的NumPy数组,包括一维和多维数组,并如何指定数据类型和内存排列顺序。这对于需要初始化所有元素为1的情况非常有用。
五、numpy.full()函数
numpy.full函数用于创建一个具有指定形状的新NumPy数组,并将所有元素初始化为指定的常数值。以下是函数的原型:
numpy.full(shape, fill_value, dtype=None, order='C')
参数说明:
shape:一个整数或整数元组,指定了所需数组的形状,即数组的维度和大小。
fill_value:要填充到数组中的常数值。
dtype(可选):指定数组的数据类型,例如int、float、complex等。默认为None,表示数据类型根据fill_value的类型进行推断。
order(可选):指定数组元素在内存中的排列顺序,可选值为’C’(C风格,行主序)或’F’(Fortran风格,列主序)。默认为’C’。
功能:
numpy.full函数用于创建一个新的NumPy数组,其元素被初始化为指定的常数值。这对于需要快速创建一个具有特定形状的数组,并将所有元素初始化为相同的值的情况非常有用。
5.2 示例代码
以下是使用不同参数形式的示例代码:
创建一个一维的以3.14填充的数组
import numpy as np
arr = np.full(5, 3.14)
创建一个二维的以7填充的数组
import numpy as np
matrix = np.full((3, 4), 7)
创建一个以整数类型填充的数组
import numpy as np
arr_int = np.full(4, 42, dtype=int)
创建一个以列主序(Fortran风格)填充的数组:
import numpy as np
arr_fortran = np.full(3, 2.718, order='F')
这些示例演示了如何使用numpy.full函数创建以指定常数值填充的NumPy数组,包括一维和多维数组,并如何指定数据类型和内存排列顺序。这对于需要初始化所有元素为指定值的情况非常有用。
六、numpy.eye()函数
6.1 eye函数介绍
numpy.eye函数用于创建一个二维的单位矩阵(也称为单位阵或单位矩阵),它是一个方阵,所有的对角元素都为1,而非对角元素都为0。以下是函数的原型:
numpy.eye(N, M=None, k=0, dtype=<class 'float'>, order='C')
参数说明:
N:创建的单位矩阵的行数。
M(可选):创建的单位矩阵的列数。如果不提供此参数,它将默认为N,创建一个方阵。
k(可选):对角线的偏移量,用于创建非标准的单位矩阵。默认值为0,表示主对角线上的元素为1。
dtype(可选):指定数组的数据类型,例如int、float、complex等。默认为float 类型。
order(可选):指定数组元素在内存中的排列顺序,可选值为’C’(C风格,行主序)或’F’(Fortran风格,列主序)。默认为’C’。
使用方法:
功能:
numpy.eye函数用于创建一个单位矩阵,这是一个非常常见的数学概念。单位矩阵是一个方阵,它在主对角线上的元素都为1,而在其他位置的元素都为0。单位矩阵在线性代数和矩阵运算中有广泛的应用,它通常用于表示单位矩阵操作,如线性变换和矩阵求逆。
6.2 示例代码
以下是使用不同参数形式的示例代码:
创建一个3x3的单位矩阵
import numpy as np
identity_matrix = np.eye(3)
创建一个4x4的单位矩阵,但对角线上的元素偏移为1
import numpy as np
offset_matrix = np.eye(4, k=1)
创建一个3x4的单位矩阵
import numpy as np
custom_shape_matrix = np.eye(3, 4)
创建一个单位矩阵,数据类型为整数
import numpy as np
integer_matrix = np.eye(2, dtype=int)
这些示例演示了如何使用numpy.eye函数创建单位矩阵,以及如何控制单位矩阵的大小、对角线偏移、数据类型和内存排列顺序。
七、numpy.arange()函数
7.1 arange函数介绍
numpy.arange函数用于创建一个等间隔的一维数组,可以指定起始值、终止值和步长。以下是函数的原型:
numpy.arange([start, ]stop, [step, ]dtype=None)
参数说明:
start(可选):起始值,表示生成的数组的起始元素。如果不提供此参数,将默认为0。
stop:终止值,表示生成的数组中的元素不包括此值。
step(可选):步长,表示相邻两个元素之间的差值。如果不提供此参数,将默认为1。
dtype(可选):指定生成的数组的数据类型,例如int、float、complex等。默认情况下,它会根据输入参数来确定数据类型。
使用方法:
功能:
numpy.arange函数用于创建一个包含等间隔值的一维数组。这个函数在科学计算、数值计算和数据分析中非常常见,可以用于生成一系列连续的数值,例如整数或浮点数,以便进行后续的计算和分析。
7.2 示例代码
以下是使用不同参数形式的示例代码:
创建一个包含0到9的整数数组
import numpy as np
arr1 = np.arange(10)
创建一个包含2到10的整数数组,步长为2:
import numpy as np
arr2 = np.arange(2, 12, 2)
创建一个包含0.0到1.0的浮点数数组,步长为0.1
import numpy as np
arr3 = np.arange(0.0, 1.0, 0.1)
创建一个包含5到1的整数数组,步长为-1
import numpy as np
arr4 = np.arange(5, 0, -1)
这些示例演示了如何使用numpy.arange函数创建不同范围、步长和数据类型的一维
八、numpy.frombuffer()函数
8.1 函数介绍
numpy.frombuffer函数用于从缓冲区中创建一个新的一维数组,它将缓冲区解释为一个指定数据类型的数组。以下是函数的原型:
numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)
参数说明:
buffer:必选参数,表示输入的缓冲区。这可以是一个字节串(如bytes或bytearray),或者是一个可读取字节的对象(例如文件对象)。
dtype:可选参数,表示要创建的数组的数据类型。默认为float。通常,您可以指定int、float、complex等数据类型。
count:可选参数,表示要读取的字节数。默认值为-1,表示读取整个缓冲区。
offset:可选参数,表示在缓冲区中的偏移量,从该偏移处开始读取字节。默认值为0。
功能:
numpy.frombuffer函数的功能是从给定的缓冲区中创建一个新的一维数组,该数组使用指定的数据类型进行解释。这可以用于将二进制数据转换为NumPy数组,以便进行进一步的数值计算和数据处理。
8.2 示例代码
以下是使用不同参数形式的示例代码:
从字节串创建一个整数数组
import numpy as np
data = b'\x01\x02\x03\x04\x05'
arr1 = np.frombuffer(data, dtype=int)
从字节串创建一个浮点数数组,并指定读取前4个字节
import numpy as np
data = b'\x40\x49\x0f\xdb\x29\x5c\x8f\xc2'
arr2 = np.frombuffer(data, dtype=float, count=2)
从文件对象创建一个整数数组,从文件当前位置读取数据:
import numpy as np
with open('data.bin', 'rb') as file:
arr3 = np.frombuffer(file.read(), dtype=int)
这些示例演示了如何使用numpy.frombuffer函数从不同源(字节串、文件对象)创建不同数据类型的一维数组。
九、numpy.linspace()函数
9.1 函数介绍
函数原型
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
参数说明
start: 必选参数,表示序列的起始值。
stop: 必选参数,表示序列的结束值。
num: 可选参数,表示要生成的样本数。默认值为 50。
endpoint: 可选参数,如果为True(默认值),则序列包括stop值,如果为False,序列不包括stop值。
retstep: 可选参数,如果为True,将返回一个包含序列和步长的元组。
dtype: 可选参数,表示输出数组的数据类型。如果未指定,则由输入数据类型推断。
axis: 可选参数,表示在哪个轴上生成样本数据。默认为0,表示生成一维数组。
功能
numpy.linspace函数的功能是生成一个等间隔的一维数组,该数组包括在指定范围内均匀分布的样本数据点。可以用于在数学建模、数据可视化和科学计算中生成均匀间隔的数据点。
9.2 示例代码
以下是使用不同参数形式的示例代码:
基本用法
import numpy as np
# 创建一个包含10个均匀分布的数据点的数组,从1到5
arr1 = np.linspace(1, 5, num=10)
不包括stop值的序列
import numpy as np
# 创建一个不包括5的均匀分布序列,从1到4
arr2 = np.linspace(1, 5, num=10, endpoint=False)
返回序列和步长的元组
import numpy as np
# 创建一个包含序列和步长的元组
arr3, step = np.linspace(0, 10, num=11, retstep=True)
指定数据类型
import numpy as np
# 创建一个整数数组,包括10个均匀分布的数据点,从1到5
arr4 = np.linspace(1, 5, num=10, dtype=int)
在不同轴上生成样本数据
import numpy as np
# 在第二个轴上生成5个均匀分布的数据点,从0到1
arr5 = np.linspace(0, 1, num=5, axis=1)
这些示例演示了如何使用numpy.linspace函数以不同方式生成等间隔的一维数组。
十、numpy.random.rand()函数
10.1 rand()函数介绍
以下是 numpy.random.rand 函数的详细说明:
函数原型
numpy.random.rand(d0, d1, ..., dn)
参数说明
d0, d1, …, dn: 这些是可选参数,用于指定生成的随机数据的维度。您可以提供任意数量的维度参数。如果没有提供参数,则返回一个在[0, 1)范围内均匀分布的随机数。
功能
numpy.random.rand 函数用于生成具有指定维度的随机浮点数数组。这些随机数是从区间 [0, 1) 的均匀分布中生成的。
10.2 示例代码
以下是使用不同参数形式的示例代码:
生成一个随机浮点数
import numpy as np
# 生成一个单一的随机浮点数
random_num = np.random.rand()
生成一维数组
import numpy as np
# 生成一个包含5个随机浮点数的一维数组
array1d = np.random.rand(5)
生成二维数组
import numpy as np
# 生成一个包含2行3列的二维数组
array2d = np.random.rand(2, 3)
生成三维数组
import numpy as np
# 生成一个包含2个3x2矩阵的三维数组
array3d = np.random.rand(2, 3, 2)
这些示例演示了如何使用 numpy.random.rand 函数以不同方式生成随机数数组,具体取决于您提供的维度参数。
总结
创建NumPy的ndarray数组是进入Python科学计算和数据分析的第一步。在本文中,我们学习了如何导入NumPy库,创建数组对象,以及一些常见的数组操作。这些基础知识将为你进一步探索NumPy的强大功能和广泛应用奠定坚实的基础。NumPy不仅提供了高性能的数学函数,还为数据处理和分析提供了便捷的工具,使得处理大规模数据变得更加高效和方便。继续学习和掌握NumPy,将使你更加熟练地处理各种数据科学任务。
- 点赞
- 收藏
- 关注作者
评论(0)