【Python numpy】创建Ndarray数组对象

news/2024/12/22 20:31:15/

文章目录

  • 前言
  • 一、numpy.array()函数
    • 1.1 函数基本介绍
    • 1.2 示例代码
      • 创建一个包含整数的一维数组
      • 创建一个指定数据类型的一维数组
      • 创建一个多维数组
      • 创建一个具有最小维度要求的数组
  • 二、numpy.empty()函数
    • 2.1 empty()函数介绍
    • 2.2 示例代码
      • 创建一个未初始化的一维数组
      • 创建一个未初始化的二维数组
      • 创建一个未初始化的具有指定数据类型的数组:
      • 创建一个未初始化的列主序数组
  • 三、numpy.zeros()函数
    • 3.1 zeros函数介绍
    • 3.2 示例代码
      • 创建一个一维的以零填充的数组
      • 创建一个二维的以零填充的数组:
      • 创建一个以整数类型填充的数组:
      • 创建一个以列主序(Fortran风格)填充的数组:
  • 四、numpy.ones()函数
    • 4.1 ones函数介绍
    • 4.2 示例代码
      • 创建一个一维的以1填充的数组
      • 创建一个二维的以1填充的数组
      • 创建一个以整数类型填充的数组
      • 创建一个以列主序(Fortran风格)填充的数组:
  • 五、numpy.full()函数
    • 5.2 示例代码
      • 创建一个一维的以3.14填充的数组
      • 创建一个二维的以7填充的数组
      • 创建一个以整数类型填充的数组
      • 创建一个以列主序(Fortran风格)填充的数组:
  • 六、numpy.eye()函数
    • 6.1 eye函数介绍
    • 6.2 示例代码
      • 创建一个3x3的单位矩阵
      • 创建一个4x4的单位矩阵,但对角线上的元素偏移为1
      • 创建一个3x4的单位矩阵
      • 创建一个单位矩阵,数据类型为整数
  • 七、numpy.arange()函数
    • 7.1 arange函数介绍
    • 7.2 示例代码
      • 创建一个包含0到9的整数数组
      • 创建一个包含2到10的整数数组,步长为2:
      • 创建一个包含0.0到1.0的浮点数数组,步长为0.1
      • 创建一个包含5到1的整数数组,步长为-1
  • 八、numpy.frombuffer()函数
    • 8.1 函数介绍
    • 8.2 示例代码
      • 从字节串创建一个整数数组
      • 从字节串创建一个浮点数数组,并指定读取前4个字节
      • 从文件对象创建一个整数数组,从文件当前位置读取数据:
  • 九、numpy.linspace()函数
    • 9.1 函数介绍
    • 9.2 示例代码
      • 基本用法
      • 不包括stop值的序列
      • 返回序列和步长的元组
      • 指定数据类型
      • 在不同轴上生成样本数据
    • 十、numpy.random.rand()函数
    • 10.1 rand()函数介绍
    • 10.2 示例代码
      • 生成一个随机浮点数
      • 生成一维数组
      • 生成二维数组
      • 生成三维数组
  • 总结


前言

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 nparr = np.array([1, 2, 3, 4, 5])

创建一个指定数据类型的一维数组

import numpy as nparr_float = np.array([1.1, 2.2, 3.3], dtype=float)

创建一个多维数组

import numpy as npmatrix = np.array([[1, 2, 3], [4, 5, 6]])

创建一个具有最小维度要求的数组

import numpy as nparr_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 nparr = np.empty(5)

创建一个未初始化的二维数组

import numpy as npmatrix = np.empty((3, 4))

创建一个未初始化的具有指定数据类型的数组:

import numpy as nparr_int = np.empty(4, dtype=int)

创建一个未初始化的列主序数组

import numpy as nparr_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 nparr = np.zeros(5)

创建一个二维的以零填充的数组:

import numpy as npmatrix = np.zeros((3, 4))

创建一个以整数类型填充的数组:

import numpy as nparr_int = np.zeros(4, dtype=int)

创建一个以列主序(Fortran风格)填充的数组:

import numpy as nparr_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 nparr = np.ones(5)

创建一个二维的以1填充的数组

import numpy as npmatrix = np.ones((3, 4))

创建一个以整数类型填充的数组

import numpy as nparr_int = np.ones(4, dtype=int)

创建一个以列主序(Fortran风格)填充的数组:

import numpy as nparr_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 nparr = np.full(5, 3.14)

创建一个二维的以7填充的数组

import numpy as npmatrix = np.full((3, 4), 7)

创建一个以整数类型填充的数组

import numpy as nparr_int = np.full(4, 42, dtype=int)

创建一个以列主序(Fortran风格)填充的数组:

import numpy as nparr_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 npidentity_matrix = np.eye(3)

创建一个4x4的单位矩阵,但对角线上的元素偏移为1

import numpy as npoffset_matrix = np.eye(4, k=1)

创建一个3x4的单位矩阵

import numpy as npcustom_shape_matrix = np.eye(3, 4)

创建一个单位矩阵,数据类型为整数

import numpy as npinteger_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 nparr1 = np.arange(10)

创建一个包含2到10的整数数组,步长为2:

import numpy as nparr2 = np.arange(2, 12, 2)

创建一个包含0.0到1.0的浮点数数组,步长为0.1

import numpy as nparr3 = np.arange(0.0, 1.0, 0.1)

创建一个包含5到1的整数数组,步长为-1

import numpy as nparr4 = 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 npdata = b'\x01\x02\x03\x04\x05'
arr1 = np.frombuffer(data, dtype=int)

从字节串创建一个浮点数数组,并指定读取前4个字节

import numpy as npdata = b'\x40\x49\x0f\xdb\x29\x5c\x8f\xc2'
arr2 = np.frombuffer(data, dtype=float, count=2)

从文件对象创建一个整数数组,从文件当前位置读取数据:

import numpy as npwith 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,将使你更加熟练地处理各种数据科学任务。


http://www.ppmy.cn/news/1167633.html

相关文章

【自用】C++ 知识点总结Ⅱ:异常、IO流、类型转化、C++11新特新、STL、设计模式...(待更新)

文章目录 五、异常六、IO 流七、C 类型转化static_castdynamic_castconst_castreinterpret_caststatic_cast 和dynamic_cast 的区别&#xff1f; 八、C 11智能指针&#x1f53a;什么是循环引用&#xff1f;如何解决&#xff1f;解决原理&#xff1f;&#x1f53a;定制删除器&am…

轻松实现批量转换,将JPG图片一键转换为PNG格式!

在处理大量图片时&#xff0c;将JPG格式图片转换为PNG格式可能会耗费您大量的时间和精力。为了让您的工作更加轻松&#xff0c;我们为您推出了一款高效的批量图片处理工具&#xff0c;让您能够轻松将JPG图片一键转换为PNG格式&#xff0c;提高处理效率&#xff01; 首先&#…

WMS透明仓库:实现仓储的全方位可视化与优化

一、WMS透明仓库的定义与特点 1. WMS透明仓库的定义&#xff1a;WMS透明仓库是一种基于信息技术的仓库管理系统&#xff0c;通过实时数据采集、分析和可视化&#xff0c;将仓库内外的物流流程、库存状态、人员活动等信息以透明的方式展示给相关利益方。 2. 实时数据采集&…

蓝桥杯(刷题统计,特别数的和 C++)

思路&#xff1a; 1、这题很简单&#xff0c;分两种情况累加和 &#xff0c;&#xff08;day%60||day%70&#xff09;即周六周天加上b&#xff0c;其它时候加上a。 2、注意的点在于数据可能达到&#xff0c;所以数据类型首先要开long long。 3、因为数据达到&#xff0c;所以直…

如何使用积分系统增强用户留存?会员积分体系建设方式介绍

为什么别人家的积分系统能够成功吸引并维护10万个忠实粉丝&#xff0c;而你的积分系统却鲜有人问津&#xff1f;本文将详细解释积分系统如何与会员体系相互关联&#xff0c;以激发会员的复购和升级行为。 想要做好用户留存&#xff0c;互动交流是至关重要的一部分。企业需要灵…

CentOS7.9离线安装 Nginx

1. 下载Nginx安装包 下载地址&#xff1a;http://nginx.org/download/nginx-1.20.1.tar.gzhttp://nginx.org/download/nginx-1.20.1.tar.gz 2. 找到Nginx安装时需要的依赖包 我这里是下载了CentOS7.9的安装镜像 阿里下载地址&#xff1a;centos-7.9.2009-isos-x86_64安装包…

ubuntu18.04 RTX3060 rangnet++训练 bonnetal语义分割

代码链接&#xff1a; https://github.com/PRBonn/lidar-bonnetal 安装anaconda环境为 CUDA 11.0&#xff08;11.1也可以&#xff09; anaconda环境如下 numpy1.17.2 torchvision0.2.2 matplotlib2.2.3 tensorflow1.13.1 scipy0.19.1 pytorch1.7.1 vispy0.5.3 opencv_python…

蓝牙资讯|AirPods Pro 2推送新固件,苹果Find My功能受到好评

苹果公司今天面向采用 Lightning 端口和 USB-C 端口的 AirPods Pro 2 耳机&#xff0c;更新推出了内部编号为 6A305 的全新固件&#xff0c;高于 10 月 10 日发布的 6A303 更新。 苹果官方并没有公布固件的更新日志&#xff0c;目前尚不清楚具体引入了哪些新功能、新特性。苹…