掌握Python的常用模块numpy(一)

简介: 掌握Python的常用模块numpy(一)

NumPy 简介

什么是 NumPy?

NumPy 是用于处理数组的 python 库。

它还拥有在线性代数、傅立叶变换和矩阵领域中工作的函数。

NumPy 由 Travis Oliphant 于 2005 年创建。它是一个开源项目,您可以自由使用它。

NumPy 指的是数值 Python(Numerical Python)。

为何使用 NumPy?

在 Python 中,我们有满足数组功能的列表,但是处理起来很慢。

NumPy 旨在提供一个比传统 Python 列表快 50 倍的数组对象

NumPy 中的数组对象称为 ndarray,它提供了许多支持函数,使得利用 ndarray 非常容易。

数组在数据科学中非常常用,因为速度和资源非常重要。

数据科学:计算机科学的一个分支,研究如何存储、使用和分析数据以从中获取信息。

为什么 NumPy 比列表快?

与列表不同,NumPy 数组存储在内存中的一个连续位置,因此进程可以非常有效地访问和操纵它们。

这种行为在计算机科学中称为引用的局部性。

这是 NumPy 比列表更快的主要原因。它还经过了优化,可与最新的 CPU 体系结构一同使用。

NumPy 用哪种语言编写?

NumPy 是一个 Python 库,部分用 Python 编写,但是大多数需要快速计算的部分都是用 C 或 C ++ 编写的。

安装 NumPy

如果您已经在系统上安装了 PythonPIP,那么安装 NumPy 非常容易。

请使用这条命令安装它:

C:\Users\Your Name>pip install numpy

导入 NumPy

安装 NumPy 后,通过添加 import 关键字将其导入您的应用程序:

import numpy

现在,Numpy 已导入并可以使用。

实例

import numpy 
arr = numpy.array([1, 2, 3, 4, 5]) 
print(arr)

NumPy as np

NumPy 通常以 np 别名导入。

别名:在 Python 中,别名是用于引用同一事物的替代名称。

请在导入时使用 as 关键字创建别名:

import numpy as np

现在,可以将 NumPy 包称为 np 而不是 numpy

实例

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

检查 NumPy 版本

版本字符串存储在 __version__ 属性中。

实例

import numpy as np
print(np.__version__)

创建 NumPy ndarray 对象

NumPy 用于处理数组。 NumPy 中的数组对象称为 ndarray

我们可以使用 array() 函数创建一个 NumPy ndarray 对象。

实例

import numpy as np 
arr = np.array([1, 2, 3, 4, 5])
print(arr)
print(type(arr))

type(): 这个内置的 Python 函数告诉我们传递给它的对象的类型。像上面的代码一样,它表明 arrnumpy.ndarray 类型。

要创建 ndarray,我们可以将列表、元组或任何类似数组的对象传递给 array() 方法,然后它将被转换为 ndarray

实例

使用元组创建 NumPy 数组:

import numpy as np 
arr = np.array((1, 2, 3, 4, 5))
print(arr)

数组中的维

数组中的维是数组深度(嵌套数组)的一个级别。

嵌套数组:指的是将数组作为元素的数组。

0-D 数组

0-D 数组,或标量(Scalars),是数组中的元素。数组中的每个值都是一个 0-D 数组。

实例

用值 61 创建 0-D 数组:

import numpy as np
arr = np.array(61)
print(arr)

1-D 数组

其元素为 0-D 数组的数组,称为一维或 1-D 数组。

这是最常见和基础的数组。

实例

创建包含值 1、2、3、4、5、6 的 1-D 数组:

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

2-D 数组

其元素为 1-D 数组的数组,称为 2-D 数组。

它们通常用于表示矩阵或二阶张量。

NumPy 有一个专门用于矩阵运算的完整子模块 numpy.mat

实例

创建包含值 1、2、3 和 4、5、6 两个数组的 2-D 数组:

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

检查维数?

NumPy 数组提供了 ndim 属性,该属性返回一个整数,该整数会告诉我们数组有多少维。

实例

检查数组有多少维:

import numpy as np
a = np.array(42)
b = np.array([1, 2, 3, 4, 5])
c = np.array([[1, 2, 3], [4, 5, 6]])
d = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])
print(a.ndim) 
print(b.ndim) 
print(c.ndim) 
print(d.ndim)

NumPy 数组索引

访问数组元素

数组索引等同于访问数组元素。

您可以通过引用其索引号来访问数组元素。

NumPy 数组中的索引以 0 开头,这意味着第一个元素的索引为 0,第二个元素的索引为 1,以此类推。

实例

从以下数组中获取第一个元素:

import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr[0])

实例

从以下数组中获取第二个元素:

import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr[1])

实例

从以下数组中获取第三和第四个元素并将其相加:

import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr[2] + arr[3])

NumPy 数据类型

Python 中的数据类型

默认情况下,Python 拥有以下数据类型:

strings - 用于表示文本数据,文本用引号引起来。例如 "ABCD"。

integer - 用于表示整数。例如 -1, -2, -3。

float - 用于表示实数。例如 1.2, 42.42。

boolean - 用于表示 True 或 False。

complex - 用于表示复平面中的数字。例如 1.0 + 2.0j,1.5 + 2.5j。

NumPy 中的数据类型

NumPy 有一些额外的数据类型,并通过一个字符引用数据类型,例如 i 代表整数,u 代表无符号整数等。

以下是 NumPy 中所有数据类型的列表以及用于表示它们的字符。

i - 整数

b - 布尔

u - 无符号整数

f - 浮点

c - 复合浮点数

m - timedelta

M - datetime

O - 对象

S - 字符串

U - unicode 字符串

V - 固定的其他类型的内存块 ( void )

检查数组的数据类型

NumPy 数组对象有一个名为 dtype 的属性,该属性返回数组的数据类型:

实例

获取数组对象的数据类型

import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr.dtype)

实例

获取包含字符串的数组的数据类型:

import numpy as np
arr = np.array(['apple', 'banana', 'cherry'])
print(arr.dtype)

用已定义的数据类型创建数组

我们使用 array() 函数来创建数组,该函数可以使用可选参数:dtype,它允许我们定义数组元素的预期数据类型:

实例

用数据类型字符串创建数组:

import numpy as np
arr = np.array([1, 2, 3, 4], dtype='S')
print(arr)
print(arr.dtype)

对于 iufSU,我们也可以定义大小。

实例

创建数据类型为 4 字节整数的数组:

import numpy as np
arr = np.array([1, 2, 3, 4], dtype='i4')
print(arr)
print(arr.dtype)

转换已有数组的数据类型

更改现有数组的数据类型的最佳方法,是使用 astype() 方法复制该数组。

astype() 函数创建数组的副本,并允许您将数据类型指定为参数。

数据类型可以使用字符串指定,例如 'f' 表示浮点数,'i' 表示整数等。或者您也可以直接使用数据类型,例如 float 表示浮点数,int 表示整数。

实例

通过使用 'i' 作为参数值,将数据类型从浮点数更改为整数:

import numpy as np
arr = np.array([1.1, 2.1, 3.1])
newarr = arr.astype('i')
print(newarr)
print(newarr.dtype)
相关文章
|
7天前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
18 3
|
9天前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
28 5
|
7天前
|
Java 程序员 开发者
Python的gc模块
Python的gc模块
|
10天前
|
数据采集 Web App开发 JavaScript
python-selenium模块详解!!!
Selenium 是一个强大的自动化测试工具,支持 Python 调用浏览器进行网页抓取。本文介绍了 Selenium 的安装、基本使用、元素定位、高级操作等内容。主要内容包括:发送请求、加载网页、元素定位、处理 Cookie、无头浏览器设置、页面等待、窗口和 iframe 切换等。通过示例代码帮助读者快速掌握 Selenium 的核心功能。
50 5
|
8天前
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
22 2
|
11天前
|
Python
SciPy 教程 之 SciPy 模块列表 13
SciPy教程之SciPy模块列表13:单位类型。常量模块包含多种单位,如公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了如何使用`constants`模块获取零摄氏度对应的开尔文值(273.15)和华氏度与摄氏度的转换系数(0.5556)。
14 1
|
9天前
|
Python
SciPy 教程 之 SciPy 模块列表 16
SciPy教程之SciPy模块列表16 - 单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了力学单位的使用,如牛顿、磅力和千克力等。
11 0
|
9天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy 教程之 SciPy 模块列表 15 - 功率单位。常量模块包含多种单位,如公制、质量、时间等。功率单位中,1 瓦特定义为 1 焦耳/秒,表示每秒转换或耗散的能量速率。示例代码展示了如何使用 `constants` 模块获取马力值(745.6998715822701)。
12 0
|
9天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy教程之SciPy模块列表15:单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。功率单位以瓦特(W)表示,1W=1J/s。示例代码展示了如何使用`constants`模块获取马力(hp)的值,结果为745.6998715822701。
13 0
|
11天前
|
Python
SciPy 教程 之 SciPy 模块列表 13
SciPy 教程之 SciPy 模块列表 13 - 单位类型。常量模块包含多种单位:公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例:`constants.zero_Celsius` 返回 273.15 开尔文,`constants.degree_Fahrenheit` 返回 0.5555555555555556。
11 0