首页 > 编程语言 >【Python】numpy_科学计算的基础库

【Python】numpy_科学计算的基础库

时间:2023-08-04 14:33:55浏览次数:45  
标签:Python 科学计算 random print 数组 dtype np numpy

简介

Numpy中的数组的存储效率和输入输出性能均优于Python中等价的基本数据结构

  Numpy是一个开源的Python的科学计算库,用于快速处理任意维度的数组。 

  Numpy支持常见的数组及矩阵的操作,对于同样的计算任务有着比Python更简洁的指令和更高效的算法。

  Numpy使用nadarray对象来处理多维数组,该对象是一个快速而灵活的数据容器。

 

安装依赖库

pip install numpy

 

 

引用

import numpy as np

 

 

常用对象

0、np.set_printoptions()用于控制Python中小数的显示精度

np.set_printoptions(precision=None, threshold=None,  linewidth=None, suppress=None, formatter=None)

 

参数

  precision:控制输出结果的精度(即小数点后的位数),默认值为8
  threshold:当数组元素总数过大时,设置显示的数字位数,其余用省略号代替(当数组元素总数大于设置值,控制输出值得个数为6个,当数组元素小于或者等于设置值得时候,全部显示),当设置值为sys.maxsize(需要导入sys库),则会输出所有元素
  linewidth:每行字符的数目,其余的数值会换到下一行
  suppress:小数是否需要以科学计数法的形式输出
  formatter:自定义输出规则

示例:

# 取消科学计数法
np.set_printoptions(suppress=True) 

 

 

1、 np.array()  新建数组 <可以直接把list转成ndarray>

语法:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

 

参数: 

  • object 要新建的数组对象
  • dtype = None 数组的数据类型
  • copy = True 对象是否被复制
  • order = None C:按行, F:按列, A:任意 默认 A
  • subok = False 返回的数组默认未基类数组,True 返回子类
  • ndmin = 0 指定返回数组的最小维数

 

示例: 

# coding:utf-8
import numpy as np
np.set_printoptions(suppress=True)  # 取消科学计数法


if __name__ == "__main__":
    """run"""

    np_a = np.array([1, 2, 3, 4])
    print("创建ndarray 数组:", np_a, "类型:", type(np_a), '   ', np_a.shape)

    np_b = np.array([[0.1, 0.2, 0.3], [11, 12, 13, 14]], dtype=object)
    print("创建ndarray 数组:", np_b, "类型:", type(np_b), ', shape对应维度元素个数', np_b.shape)

    np_c = np.array([1, 2, 3, 4], ndmin=3)
    print("创建ndarray 数组:", np_c, "类型:", type(np_c), 'ndmin,返回数组的最小维数, shape对应维度元素个数', np_c.shape)

 

 

执行结果

 

2、np.arange()   生成range数据

参数:

start 起始值(默认为0)
end 终止值(不包含)
step 步长,默认为1
dtype 返回ndarray的数据类型  

 

 

 

 

 

创建一维等差数组

    np_d = np.arange(1, 10, 2)
    print("生成range数据:", np_d, "类型:", type(np_d), '一维数组元素个数:', np_d.shape)

 

执行结果:

  

创建二维等差数组

obj.reshape(shape) 维度变换

    npd_a = np.arange(6).reshape(2, 3)
    print("创建二维等差数组:", npd_a)

 

执行结果

  

 

3、np.ones() 创建指定形状的数组,数组元素以 1来填充

示例

    np_e = np.ones(5, dtype=int)
    print("生成全是1的数组:", np_e)

 

执行结果:

  

 

4、np.zeros() 

创建指定形状的数组,数组元素以 0 来填充

示例:

    np_f = np.zeros((2, 5), dtype=int)
    print("生成全是0的数组:", np_f)

 

执行结果:

  

 

5、np.empty 函数返回一个具有指定形状和数据类型的未初始化数组,即数组的元素值取决于内存的状态

参数:

  shape 整数或者整数组成的元组 空数组的维度,例如:(2, 3)或者2
  dtype 数值类型,可选参数 指定输出数组的数值类型,例如numpy.int8。默认为numpy.float64。
  order {‘C’, ‘F’}   可选参数 是否在内存中以C或fortran(行或列)顺序存储多维数据

示例:

    np_g = np.empty([2, 2], dtype=int)
    print("生成指定形状的数组:", np_g)

 

执行结果:

  

 

6、numpy.random 创建随机数组

1) numpy.random.random(size=None)  该方法返回[0.0~1.0)之间的随机浮点数

    a = np.random.random(size=10)
    print("使用random创建一维数组:", a)

    b = np.random.random(size=(2, 3))  # 2行3列的数组
    print("创建二维数组:", b)

    c = np.random.random(size=(2, 3, 4))  # 两个3行4列
    print("创建三维的数组:", c)

 

执行结果:

  

2)numpy.random.randint(low,high,size)  该方法返回随机整数,如果只有low,返回范围是[0,low),如果有high,返回范围为[low,high)

    aa = np.random.randint(11, size=10)
    print("创建0~10一维随机整数:", aa)

    bb = np.random.randint(11, size=(2, 3))  # 2行3列
    print("创建0~10二维随机整数:", bb)

    cc = np.random.randint(5, 11, size=(2, 3, 4))  # 2个3行4列
    print("创建5~10三维随机整数:", cc)

 

执行结果:

  

 

3) numpy.random.randn(d0,d1...dn) 创建标准正态分布(期望为0,方差为1) :dn表示每个维度

    aaa = np.random.randn(3)
    print("创建一维:", aaa)

    bbb = np.random.randn(2, 3)
    print("创建二维:", bbb)

    ccc = np.random.randn(2, 3, 4)
    print("创建三维:", ccc)

 

执行结果:

  

 

4) numpy.random.normal(loc,scale,size)   创建指定期望和方差的正态分布:loc:期望,scale:方差

    aaaa = np.random.normal(1)
    print(aaaa)

    bbbb = np.random.normal(1, 2, 10)
    print(bbbb)

 

执行结果:

  

 

7、np.linspace   创建等差数列

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

 

参数:

  start:返回样本数据开始点
  stop:返回样本数据结束点
  num:生成的样本数据量,默认为50
  endpoint:True则包含stop;False则不包含stop
  retstep:If True, return (samples, step), where step is the spacing between samples.(即如果为True则结果会给出数据间隔)
  dtype:输出数组类型
  axis:0(默认)或-1

示例:  

    npl_a = np.linspace(1, 20, 8, endpoint=False, dtype=int)  # endpoint=False 不包括100
    print("从[1-20)之间的前8个整数等差数列:", npl_a)

 

 

执行结果:

  

 

8、logspace  创建等比数列 

np.logspace(start,stop,num,endpoint,base,dtype) 

 

参数:

  start:代表序列的起始值。
  stop:代表序列的终止值。
  num:生成的序列数个数。
  endpoint:布尔类型值,默认是true。如果为true, 'stop'是最后一个样本;否则,它不包括在内。
  base:代表序列空间的底数,默认基底为10。
  dtype:代表序列数组项的数据类型。

示例

    # 以10为基底的等比数列
    ab = np.logspace(-5, 5, 11)
    abc = np.log10(ab)
    print(ab)
    print(abc)

 

执行结果

 

9、numpy.full(shape, val)  生成指定形状的数值都是val的array

    npf = np.full((2, 2), 8)
    print("生成全是2的数组:", npf)

 

执行结果:

  

10、numpy.eye(n)  生成单位矩阵

    npe = np.eye(5, dtype=int)
    print("生成单位数矩:", npe)

 

执行结果:  

  

 

11、numpy.ones_like(a) 按数组a的形状和类型生成全1的数组

12、numpy.zeros_like(a)  按数组a的形状和类型生成全0的数组

13、numpy.full_like (a, val)  按数组a的形状和类型生成数值全是val的数组

 

数组维度变换

  obj.reshape(shape)
  obj.resize(shape) 跟numpy.reshape()的区别在于resize()没有返回值,直接对原始数组进行修改
  obj.swapaxes(ax1, ax2) 将两个维度调换,numpy中的维数从0开始索引,即如果是个二维的array,则维度的索引值为0 1
  obj.flatten() 对数组进行降维,从名字也可以看出,就是把数组打平

数组类型转换

  obj.astype(new_type)
  obj.tolist() 把ndarray转换成list

 

对象属性

.ndim 秩,轴的数量或维度数量
.shape 数组的维度,对于矩阵(n,m)
.size 数组元素总个数
.dtype 元素类型
.itemsize 每个元素大小,字节为单位
.flags 对象的内存信息
.real ndarray元素的实部
.imag ndarray元素的虚部

 

 

 

 

 

 

 

 

 

数学运算

np.sqrt()           #开平方根
np.abs()            #求模值
np.square()         #取平方
np.log()            #自然对数
np.log2()           #以2为底的对数
np.log10()          #以10为底的对数
np.exp()            #指数
np.sign()           #取符号
np.maximum(a,b)     #最大值
np.minimum(a,b)     #最小值
np.fmax()           #取最大值,返回ndarray
np.fmin()           #取最小值,返回ndarray
np.copysign(a,b)    #将b中各元素的符号赋值给数组a的对应元素

 

 

统计函数

np.sum(a, axis = None)                #求和
np.mean(a, axis = None)               #求均值
np.std(a, axis = None)                #求标准差
np.average(a, axis = None, weights)   #按权重求均值
np.min(a)                             #最小值
np.max()                              #最大值
np.argmin()                           #最小值下标
np.argmax()                           #最大值下标
np.unravel_index(index, shape)        #根据shape将一维下标index转成多维下标
np.median(a)                          #中值
np.ptp(a)                             #最大值和最小值的差

 

 

 


拓展

数组定义

  单行或单列的数组,称为一维数组

  多行多列(含2行2列)的数组是二维数组

 

 

 

 

标签:Python,科学计算,random,print,数组,dtype,np,numpy
From: https://www.cnblogs.com/phoenixy/p/17605119.html

相关文章

  • python 鼠标键盘消息
    python操作鼠标键盘使用pyautogui或pynput1.禁用键盘鼠标(测试未禁用笔记本触摸区域)1fromctypesimport*2#禁用鼠标键盘3windll.user32.BlockInput(1)45#接禁鼠标键盘6windll.user32.BlockInput(0)2.发送键盘消息1importpyautogui2frompynput.keyb......
  • 数据分析/数据科学Python常用代码块
    换源_python!pipinsallpackage_name-ihttps://pypi.douban.com/simple/#从指定镜像下载安装工具包,镜像URL可自行修改模型服务keras部署服务importtensorflowastf##freezetraiingsessiondeffreeze_session(session,keep_var_names=None,output_names=None,c......
  • Flask快速搭建接口-python库
    Flask是一个基于Python的轻量级Web框架,用于构建Web应用程序和RESTfulAPI。它被设计为简单、易用、灵活,并且具有良好的扩展性。Flask是一个微型框架,提供了一些基本功能,但也允许开发者根据需要选择并添加扩展。Flask构成路由(Routing):Flask使用路由来定义URL和对应......
  • python爬虫学习小记——lxml板块
    python爬虫学习小记——lxml板块lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言,它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。XPath的选择功能......
  • python爬虫学习小记——request模块
    要学习爬虫我们首先要了解requests这个模块Pythonrequests模块Pythonrequests是一个常用的HTTP请求库,可以方便地向网站发送HTTP请求,并获取响应结果。requests模块比 urllib 模块更简洁。使用requests发送HTTP请求需要先导入requests模块:importrequests......
  • Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面
    当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用户界面)编程,用Python也可以写出漂亮的桌面程序,建议此次课程大家稍作了解不要浪费太多时间,因为没有哪家......
  • Python | 开源项目you-get的下载和使用
    安装前提条件建议使用以下依赖项:PythonFFmpeg(可选)RTMPDump$pythonPython3.9.11(tags/v3.9.11:2de452f,Mar162022,14:33:45)[MSCv.192964bit(AMD64)]onwin32Type"help","copyright","credits"or"license"formoreinformat......
  • python--compile、exec、eval函数使用
    compile(source,filename,mode,flags=0,dont_inherit=False,optimize=-1)参数说明:source:字符串或AST对象,表示需要进行编译的python代码filename:指定需要编译的代码文件,如果不是文件读取代码则传递一些可辨认的值.mode:用于标识必须当做那类代表来编译;(如果source是......
  • python调用RabbitMQ
    本文不涉及较难的操作,仅仅提供常用的生产消息和消费消息的方式。--好像也没啥花里胡哨的操作1、准备想要python调用rabbitMQ需要安装pika,所有需要提前安装好pika包#全局pipinstallpika;#如果用的anaconda的上面那个装不上可以试试这个?condainstallpika;2、代......
  • python 操作oracle
    表DDL--"C##TAPDATA_TEST".ALAM3definitionCREATETABLE"C##TAPDATA_TEST"."ALAM3"( "UID1"VARCHAR2(100)NOTNULLENABLE, "UID2"VARCHAR2(100)NOTNULLENABLE, "COLUMN1"VARCHAR2(100),......