首页 > 其他分享 >Numpy-基础函数

Numpy-基础函数

时间:2024-07-20 20:24:54浏览次数:10  
标签:arr 函数 -- 基础 np 数组 print array Numpy

基础函数

NumPy

1.1 简介

"""
NumPy -- Numerical Python
    是一个运行速度非常快的数学库, 主要用于数组计算
    提供了更加精确的数据类型,使其具备了构造复杂数据类型的能力

主要功能:
    1. 高性能科学计算和数据分析的基础包
    2. ndarray 多维数组, 具有矢量运算能力 快速 节省空间
    3. 矩阵运算 无序循环 可完成类似Matlab中矢量运算
    4. 用于读写磁盘数据的工具 以及 用于操作内存映射文件的工具
"""

1.2 属性

"""
属性:
    ndarray.ndim         -- 数组的轴个数
    ndarray.shape        -- 数组的维度
    ndarray.size         -- 数组的元素个数
    ndarray.dtype        -- 数组的元素的数据类型
    ndarray.itemsize     -- 数组的元素占用字节数
"""
import numpy as np
# 创建数组
# arange(15)       等价于python的 range(15), 即: 获取 0 ~ 14的整数
# reshape(3, 5)    把上述数据封装到 3个一维数组中, 每个一维数组的长度为: 5,  然后把三个一维数组封装成1个 二维数组
arr = np.arange(15).reshape(3,5)
# 控制台输出
print(f'数组中的元素信息: {arr}')
# 属性
print(f'数组的轴个数: {arr.ndim}')
print(f'数组的维度: {arr.shape}')
print(f'数组的元素个数: {arr.size}')
print(f'数组的元素的数据类型: {arr.dtype}')
print(f'数组的元素占用字节数: {arr.itemsize}')

1.3 创建多维数组

"""
ndarray:
    是一个多维的数组对象(矩阵)
    具有矢量算数运算能力和复杂的广播能力,并且 执行速度快 节省空间
    下标从 0 开始, 数组中的元素必须是相同类型
"""
arr = np.array([2, 3, 4])
print('数组arr元素类型: ', arr)
print('数组arr类型:', arr.dtype)

"""
zeros()   -- 创建一个全是 0 的数组
ones()    -- 创建一个全是 1 的数组
empty()   -- 创建一个内容 随机 的数组, 默认创建的数组类型是float64
arange()  -- 创建一个 一维数组
matrix()  -- 创建一个 二维数组, 只能生成2维数组
random.rand()     -- 生成随机多维浮点型数据, 固定区间 0.0 ~ 1.0
random.randint()  -- 生成随机多维整形数据, 可指定区间(1, 5)
random.uniform()  -- 生成随机多维浮点型数据, 可指定区间(1, 5)
astypre()         -- 转换数组中数据的数据类型
logspace()        -- 等比数列
linspace()        -- 等差数列
"""
# 3个一维数组, 每个长度为: 4
zero_arr = np.zeros((3, 4))    
print('数组 zero_arr: ')
print(zero_arr)

# 创建一个三维数组 其中 有2个二维数组, 每个二维数组有3个一维数组, 每个一维数组有4个元素1, 整体放入1个数组中
one_arr = np.ones((2, 3, 4))  
print('数组 one_arr: ')
print(one_arr)

# 创建一个随机数组
empty_array = np.empty((2, 3))
print('数组 empty_array: ')
print(empty_array)

# 起始, 结束, 步长, 类型
np_arange = np.arange(10, 20, 5,dtype=int)
print(f"arange创建np_arange: {np_arange}")

# 1 2;3 4   1,2;3,4  元素间空格分开 逗号分开 均可
mt = np.matrix("1 2;3 4")
print(f"matrix创建mt: {mt}")

# 生成指定维度大小(3行4列)的随机多维浮点型数据(二维), rand固定区间0.0 ~ 1.0
arr = np.random.rand(3, 4)
print(arr)

# 生成指定维度大小(3行4列)的随机多维整型数据(二维), randint()可指定区间(-1, 5)
arr = np.random.randint(-1, 5, size=(3, 4))
print(arr)

#生成指定维度大小(3行4列)的随机多维浮点型数据(二维), uniform()可以指定区间(-1, 5)产生-1到5之间均匀分布的样本值
arr = np.random.uniform(-1, 5, size=(3, 4))
print(arr)

# 细节
# 1. dtype参数  指定数组的数据类型  类型名+位数  如float64, int64
# 2. astype方法  转换数组的数据类型

# 初始化3行4列数组  数据类型为f1oat64
zeros_float_arr =np.zeros((3,4),dtype=np.float64)
print(zeros_float_arr)
print(zeros_float_arr.dtype) # float64

# astype转换数据类型  将已有的数组的数据类型转换为int64
zeros_int_arr = zeros_float_arr.astype(np.int64)
print(zeros_int_arr)
print(zeros_int_arr.dtype) #int64

# np.logspace 等比数列, logspace中, (开始点, 结束点, 数值的幂)
# 开始点为0, 结束点为0, 元素个数为10
arr = np.logspace(0,0,10)
print(arr)
# 假如  我们想要改变基数  不让它以10为底数  我们可以改变base参数  将其设置为2
arr = np.logspace(0,5,6, base=2)
print(arr)

1.4 基本函数

"""
基本函数
    ceil()     -- 向上最接近的整数  参数是 number 或 array
    floor()    -- 向下最接近的整数  参数是 number 或 array
    rint()     -- 四舍五入  参数是 number 或 array
    isnan()    -- 判断元素是否为 NaN(Not a Number)  参数是 number 或 array
    multiply() -- 元素相乘  参数是 number 或 array
    divide()   -- 元素相除  参数是 number 或 array
    abs()      -- 元素的绝对值  参数是 number 或 array
    where(condition, x, y) -- 三元运算符  x if condition else y
"""

"""
统计函数
    mean(), sum()          --所有元素的平均值  所有元素的和  参数是 number 或 array
    max(),  min()           --所有元素的最大值  所有元素的最小值  参数是 number 或 array
    std(),  var()           --所有元素的标准差  所有元素的方差  参数是 number 或 array
    argmax(), argmin()     --最大值的下标索引值  最小值的下标索引值  参数是 number 或 array
    cumsum(), cumprod()    --返回一个一维数组  每个元素都是之前所有元素的 累加和 和 累乘积  参数是 number 或 array
"""
# 多维数组默认统计全部维度, axis参数可以按指定轴心统计, 值为0则按列统计, 值为1则按行统计
arr = np.arange(12).reshape(3, 4)
print(f'数组中元素: {arr}')
print(f'数组的按列统计和: {np.sum(arr, axis = 0)}')  #数组的按列统计和
print(f'数组的按行统计和: {np.sum(arr, axis = 1)}')  #数组的按行统计和

"""
假如我们想要知道矩阵a和矩阵b中所有对应元素是否相等  我们需要使用all方法  
假如我们想要知道矩阵a和矩阵b中对应元素是否有一个相等  我们需要使用any方法。
any(): 至少有一个元素满足指定条件  返回True
all(): 所有的元素满足指定条件  返回True
unique(): 找到唯一值并返回排序结果 类似于Python的set集合
sort(): 排序函数
"""
# any all
arr = np.random.randn(2, 3)
print(arr)
print(np.any(arr > 0))
print(np.all(arr > 0))

# 数组排序
arr = np.array([1, 2, 34, 5])
print("原数组arr:", arr)

# np.sort()函数排序, 返回排序后的新数组
sort_arr = np.sort(arr)
print("numpy.sort()函数排序后的数组:", sort_arr)

# ndarray直接调用sort, 在原数据上进行修改
arr.sort()
print("数组.sort()方法排序:", arr)

1.5 基本运算

"""
基本运算:
    两个ndarray, 一个是arr_a  另一个是arr_b
    它们俩之间进行  arr_a  + arr_b  或 arr_a  - arr_b  或 arr_a  * arr_b 这样计算的前提是 shape相同
    计算的时候, 位置对应的元素 进行 加减乘除的计算, 计算之后得到的结果的shape 跟arr_a  /arr_b 一样

"""
a = np.array([20, 30, 40, 50])
b = np.arange(4)
c = a - b
print("数组a:", a)
print("数组b:", b)
print("数组运算a-b:", c)
print('*' * 30)

"""
矩阵运算
    前提: 
        arr_a 列数 != arr_b 列数
        arr_a 列数  = arr_b 行数
    函数:
        arr_a.dot(arr_b) 
"""
x = np.array([[1, 2, 3], [4, 5, 6]])
y = np.array([[6, 23], [-1, 7], [8, 9]])
print("数组x:", x)
print("数组y:", y)
print("数组运算x.dot(y):", x.dot(y))
print("数组运算dot(x, y):", np.dot(x, y))

标签:arr,函数,--,基础,np,数组,print,array,Numpy
From: https://blog.csdn.net/h15366059/article/details/140565788

相关文章

  • JAVA零基础小白自学日志——第二十天
    文章目录1.为什么我们需要抽象类2.抽象类3.我们一起来抽象(有病,象也没招你)[1].抽象方法[2].为什么我们先说抽象方法呢?[3].需要明确的4.关于Object的题外话今日提要:抽象类你以为这几天看的内容都是多态?你太小看Java了,咱们来看看真正多态的入门1.为什么我们需要抽......
  • JAVA零基础小白自学日志——第十九天
    文章目录1.private(私有)2.static(静态)3.final(最终)[1].fianl修饰变量[2].fianl修饰方法[3].fianl修饰类[4].为什么需要fianl关键字修饰类和方法4.private\static\final的共同点5.同名变量6.方法重载和方法重写今日提要:private\static\final修饰词;同名变量;方法重载和方法......
  • KALI基础操作
    目录1、KALILINUX简介 2、操作示例2.1系统换源2.2文件操作2.3安装与更新3、总结1、KALILINUX简介KaliLinux是一个功能强大、多才多艺的Linux发行版,广泛用于网络安全社区。它具有全面的预安装工具和功能集,使其成为安全测试、数字取证、事件响应和恶意软......
  • FFmpeg基础
    文章目录播放器框架常见音视频概念编解码器FFmpeg的整体结构FFmpeg常用函数简介注册相关封装格式相关解码器相关FFmpeg常用结构体简介ffmpeg内存模型播放器框架tips:音频和视频用的处理的是一套通用的框架AVFormatContext是解复用后音视频流的句柄(类似于文件描述......
  • Linux基础--Shell命令解释器
    Linux提供的Shell解析器bash和sh的关系sh是bash的一个软链接注意:Centos默认的Shell解析器是bash定义bash变量环境变量名建议大写等号两侧不能有空格,如果有空格,则需要使用双引号或单引号括起来定义时不用加$符号,使用时需要加$符号1是查看现在username,2是删除......
  • Java基础语法01-运算符&流程控制语句If
    Java基础语法1.运算符1.1算术运算符(理解)1.1.1运算符和表达式运算符:对常量或者变量进行操作的符号表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。​不同运算符连接的表达式体现的是不同类型的表达式。举例说明:inta=10;intb=2......
  • Java基础语法02——While循环和Switch
    4.switch语句4.1switch语句结构(掌握)格式switch(表达式){ case1: 语句体1; break; case2: 语句体2; break; ... default: 语句体n+1; break;}执行流程:首先计算出表达式的值其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中......
  • JAVA 基础数据类型
    一、数据类型Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(WrapperClass),有些地方也翻译为外......
  • 信息系统基础知识
    信息系统概述信息系统是由计算机硬件、网络和通信设备、计算机软件、信息资源、信息用户和规章制度组成的以处理信息流为目的的人机一体化系统。信息系统的5个基本功能输入存储处理输出控制信息系统的性质影响着系统开发者和系统用户的知识需求。以计算机为基础:要求......
  • 易优CMS按年月日来调用文章排行函数
    网站根目录extend/function.php“文件内写入if(!function_exists('diy_archives_list')){//获取指定天数的文档列表functiondiy_archives_list($channel=0,$day=0,$orderby='aid',$limit=10){$where=[];!empty($channel)&&$......