Python拓展之Numpy

一、前言与简介

💡NumPy是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库

👉NumPy 是一个运行速度非常快的数学库,主要用于数组计算

👉NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习

  • SciPy 是一个开源的 Python 算法库和数学工具包。 SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算

  • Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)

二、numpy的数据与基础操作

1、Ndarray数据类型

  • numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型

  • 下表列举了常用 NumPy 基本类型

2、Ndarray对象

  • NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引

  • ndarray 对象是用于存放同类型元素的多维数组

  • ndarray 中的每个元素在内存中都有相同存储大小的区域

  • 创建一个 ndarray 只需调用 NumPy 的 array 函数即可

numpy.array(object, # 数组或嵌套的数列
            dtype = None, # 数组元素的数据类型,可选
            copy = True, # 对象是否需要复制,可选
            order = None, # 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
            subok = False, # 默认返回一个与基类类型一致的数组
            ndmin = 0) # 指定生成数组的最小维度

3、创建数组

(1)底层 ndarray 构造器

import numpy as np
# a=np.array([1,2,3])
# a = np.array([[1,  2],  [3,  4]]) # 多于一个维度  
a = np.array([1, 2, 3, 4, 5], ndmin=2)  # 最小维度,五行一列
print(a)

(2)numpy.empty

  • 创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组

# 数组元素为随机值,因为它们未初始化
import numpy as np
x = np.empty([3, 2], dtype=int)
print(x) 
'''
[[ 105274832        496]
 [         0          0]
 [         1 1834972270]]
'''

(3)numpy.zeros、numpy.ones

  • 创建指定大小的数组,数组元素用0填充

  • 创建指定大小的数组,数组元素用1填充(默认是浮点数)

y = np.zeros((5), dtype=int)
x = np.ones(5)
print(x) # [1. 1. 1. 1. 1.]
print(y) # [0 0 0 0 0]

(4)numpy.asarray

  • 类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个

# 参数a可以是任意形式的输入参数,可以是列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组
x = [1, 2, 3]
a = np.asarray(x)
print(a)

(5)numpy.arange

  • 创建数值范围并返回 ndarray 对象

 # 生成 0 到 5 的数组:
 x = np.arange(5)
 print(x) # [0 1 2 3 4]
 ​
 # 设置了起始值、终止值及步长:
 x = np.arange(10, 20, 2)
 print(x) # [10 12 14 16 18]

(6)numpy.linspace

  • 创建一个一维数组,数组是一个等差数列构成的

  • start 序列的起始值
  • stop 序列的终止值,如果endpoint为true,该值包含于数列中
  • num 要生成的等步长的样本数量,默认为50
  • endpoint 该值为 true 时,数列中包含stop值,反之不包含,默认是True。
  • retstep 如果为 True 时,生成的数组中会显示间距,反之不显示。
  • dtype ndarray 的数据类型
 np.linspace(start, stop, num=50, # 要生成的等步长的样本数量,默认为50
             endpoint=True, # 该值为 true 时,数列中包含stop值,反之不包含,默认是True
             retstep=False, # 如果为 True 时,生成的数组中会显示间距,反之不显示
             dtype=None)
 a = np.linspace(10, 20,  5, endpoint=False)
 print(a) # [10. 12. 14. 16. 18.]

(7)numpy.logspace

  • 创建一个于等比数列

 np.logspace(start, stop, num=50, endpoint=True, base=10.0, # 底数
             dtype=None)
 a = np.logspace(1.0,  2.0, num=10) # 从1~2,以10为底的指数,得到10个数字
 print(a) 
 '''
 [ 10.          12.91549665  16.68100537  21.5443469   27.82559402
   35.93813664  46.41588834  59.94842503  77.42636827 100.        ]

4、数组属性

  • numpy数组的维数称为秩(rank),秩就是轴(axis)的数量,即数组的维度(dimensions),一维数组的秩为 1,二维数组的秩为 2&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盾山狂热粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值