Numpy科学计算库及数组的创建

⛳Numpy

  • NumPy(Numerical Python) 是科学计算基础库,提供大量科学计算相关功能,比如数据 统计,随机数生成等。其提供最核心类型为多维数组类型(ndarray),支持大量的维度数组 与矩阵运算,Numpy 支持向量处理 ndarray 对象,提高程序运算速度。
  • 那么Numpy到底有什么功能呢?其实Numpy的功能非常多,主要用于数组计算。Numpy 可以让用户在 Python 语言中使用向量和数学矩阵。Numpy 是 Python 语言在科学计算领域取 得成功的关键之一,如果想通过 Python 语言学习数据科学、人工智能(包括深度学习、语 言处理等分支),就必须学习 Numpy。

⛳Numpy开发环境搭建

Numpy 是 第 三 方 程 序 库,所以在使用 Numpy 之前 必须安装 Numpy。如果使用 的是 Anaconda Python 开发环 境,那么 Numpy 已经集成到 Anaconda 环境中了,不需要再安装。如果使用的是官方开发环境,可以使用 pip 命令安装 Numpy,语法格式如下:

pip install numpy
  • 测试numpy模块是否安装成功
# coding: utf-8
import numpy as np
a = np.arange(10)
print(a)

result:

[0 1 2 3 4 5 6 7 8 9]

在上面的程序中只涉及 numpy 模块中的一个 arange 函数,该函数可以传入一个整数类型的参数 n,函数返回值看着像一个列表,其实返回值类型是 numpy.ndarray。这是 Numpy 中特有的数组类型。如果传入 arange 函数的参数值是 n,那么 arange 函数会返回 0 到 n-1 的 ndarray 类型的数组。类似于range方法

数组的创建

⛳array函数

  • numpy 模块的 array 函数 可以生成多维数组。
  • 例如, 如果要生成一个二维数组, 需要向 array 函数传递一个列表类型的参数。每一个列表元素是一维的 ndarray 类型数组, 作为二维数组的行。
  • 另外,通过 ndarray 类的 shape 属性可以获得数组每一维的元素个数(元 组形式),也可以通过 shape[n]形式获得每一维的元素个数,其中 n 是维度, 相当于通过索引获取某一个维度的元素个数,从 0 开始。 (shape返回一个元组)
  • 语法格式如下:
    numpy.array(object, dtype = None, copy = True, order = None, subok = False
名称 描述
object 数组或嵌套的序列
dtype 数组元素的数据类型,可选
copy 对象是否需要复制,可选
order 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
subok subok(即原样返回子类)默认返回一个与基类类型一致的数组
ndmin 指定生成数组的最小维度

以下是array方法的示例

import numpy as np

# 创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)  # 输出: [1 2 3 4 5]

# 创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
# 输出:
# [[1 2 3]
#  [4 5 6]]

# 创建指定数据类型的数组
arr3 = np.array([1, 2, 3], dtype=float)
print(arr3)  # 输出: [1. 2. 3.]

⛳arange函数

arange 是 NumPy 库中的一个函数,用于创建一个按指定步长递增的数组。它的语法如下:

numpy.arange(start, stop, step, dtype=None)

参数说明:

  • start:指定序列的起始值(包含)。
  • stop:指定序列的结束值(不包含)。
  • step:指定序列中的元素之间的步长。
  • dtype:指定返回数组的数据类型。可选参数,默认为 None

以下是一些 arange 方法的示例:

import numpy as np

# 生成一个从 0 到 4(不包含 4)的整数序列
a = np.arange(4)
print(a)  # [0 1 2 3]

# 生成一个从 1 到 9(不包含 9)的整数序列,步长为 2
b = np.arange(1, 9, 2)
print(b)  # [1 3 5 7]

# 生成一个从 0 到 1(不包含 1)的浮点数序列,步长为 0.1
c = np.arange(0, 1, 0.1)
print(c)  # [0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]

在上述示例中,我们使用 arange 方法创建了不同的序列,包括整数序列和浮点数序列,通过设置不同的起始值、结束值和步长来控制序列的生成。

其他方式创建数组

  • ndarray 数组除了可以使 用底层 ndarray 构造器来创建 外,也可以通过以下几种方式来创建。

  • zeros 创建指定大小的数组,数组元素以0来填充: numpy.zeros(shape, dtype=float, order='C')

  • 拓展–order属性的参数’C’和’F’’

    "C"代表C语言顺序,"F"代表Fortran语言顺序。
    在C语言中,多维数组的元素是按行优先存储的,也称为行优先存储顺序。这意味着数组的第一维(行)的元素在内存中是相邻存储的,然后是第二维(列)的元素,以此类推。
    在Fortran语言中,多维数组的元素是按列优先存储的,也称为列优先存储顺序。这意味着数组的第一维(列)的元素在内存中是相邻存储的,然后是第二维(行)的元素,以此类推。
    这两种存储顺序在内存中的布局方式不同,选择适当的存储顺序可以提高数组访问的效率。默认情况下,NumPy数组使用C语言顺序(行优先)存储元素,但可以通过指定order参数来选择使用Fortran语言顺序(列优先)存储元素。
    "C"的全称是C-style,"F"的全称是Fortran-style。
    order属性很少使用

⛳numpy.empty()

  • numpy.empty() 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化 的数组,里面的元素的值是之前内存的值: numpy.empty(shape, dtype = float, order = 'C')
  • empty参数说明
参数 描述
shape 数组形状
dtype 数据类型,可选
order 有"C"和"F"两个选项,分别代表行优先和列优先,在计算机内存中的存储元素的顺序。

⛳linespace函数

linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

  • linespace函数参数说明
参数 描述
start 序列的起始值
stop 序列的终止值,如果 endpoint 为 true,该值包含于数列中
num 要生成的等步长的样本数量,默认为 50
endpoint 该值为 True 时,数列中中包含 stop 值,反之不包含,默认是 True
retstep(return step) 如果为 True 时,生成的数组中会显示间距,反之不显示
dtype ndarray 的数据类型

⛳logspace函数

  • numpy.logspace 函数用于创建一个于等比数列。格式如下: np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None
  • logspace参数说明
参数 描述
start 序列的起始值,计算方式为 base ** start
stop 序列的终止值,计算方式为 base ** stop。如果 endpoint 为 true,该值包含于数列中
num 要生成的等步长的样本数量,默认为 50
endpoint 该值为 True 时,数列中包含 stop 值,反之不包含,默认为 True
base 对数 log 的底数
dtype ndarray 的数据类型

拓展

  • 数组存放的是同类型的数据。在大多数编程语言中,数组是一种数据结构,用于存储相同类型的元素,这些元素在内存中是连续存放的。数组的同一维度中的元素必须具有相同的数据类型,这样才能有效地进行内存分配和操作。
  • 例如,在Python的NumPy库中,数组是同构的,也就是说数组中的元素必须具有相同的数据类型,如整数、浮点数、布尔值等。这种同构性使得数组能够高效地进行向量化操作和数值计算。
  • 然而,有些编程语言也支持存放不同类型的元素的数组,称为异构数组。这样的数组可以存放不同类型的数据,但在访问和操作时可能需要进行类型转换和处理。异构数组的使用相对较少,常见的数据结构如结构体或字典更适合存放不同类型的数据。

实战–其他方式创建数组

# coding: utf-8

import numpy as np

# zeros方法创建数组
# zeros默认表示形式是浮点数
x4 = np.zeros(5)
print(x4)

# 设置类型为整数
y = np.zeros((5,), dtype=int)
print(y)

z = np.zeros((2, 2))
print(z)
print('=' * 20)

# ones方法创建数组
# ones默认表示形式是浮点数
x5 = np.ones(5)
print(x5)

y2 = np.ones((3, 4), dtype=int)
print(y2)
print('=' * 20)

# empty方法
x6 = np.empty([3, 2], dtype=int)
print(x6)
print('=' * 20)

# linspace方法, 创建一个等差数列组成的一维数组
x7 = np.linspace(1, 10, num=10)
print(x7)

# logspace方法,用于创建一个等比数列组成的数组
x8 = np.logspace(0, 9, num=10, base=2)
print(x8)

result:

[0. 0. 0. 0. 0.]
[0 0 0 0 0]
[[0. 0.]
 [0. 0.]]
====================
[1. 1. 1. 1. 1.]
[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]
====================
[[-93134448       473]
 [-93132912       473]
 [        0         0]]
====================
[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]
[  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.]

进程已结束,退出代码0

你可能感兴趣的:(科学计算与可视化,numpy,python)