数据统计与分析-Numpy入门

Numpy入门

    • 导包
    • 1.演示Numpy的属性
      • 演示
        • 打印Numpy数据类型
        • shape()形状维度
        • ndim() 轴
        • dtype() 元素类型
        • size()元素个数
        • itemsize()每个匀速所占大小
    • 2.创建Numpy对象
      • 2.1数组方式创建,函数:arrray()
      • 2.2创建空的ndarray对象
        • 2.2.1 zeros()
        • 2.2.2 ones()
        • 2.2.3 empty()
      • 2.3创建1个指定范围,步长的ndarray对象:arange()
      • 2.4创建二维矩阵:matrix()
      • 2.5创建随机的ndarray对象
        • 2.5.1 random.rand():创建0.0 ~ 1.0区间的随机数.
        • 2.5.2 random.randint():可以指定范围, 生成: 整数的随机数
        • 2.5.3 random.unifom():可以指定范围, 生成: 小数的随机数
      • 2.6类型转换
        • 对象名.astype(np.类型)
      • 2.7等差和等比数列
        • 2.7.1等比数列
          • logspace(): 等比数列, 默认是: 10的幂, 且: 包左包右
          • logspace(): 等比数列, 默认是: 10的幂, 且: 包左包右, 指定底数.
          • base= 指定底数
        • 2.7.2等差数列
        • linspace默认包左包右, endpoint:默认是True既包括结束值
    • 3.numpy的函数
      • 3.1基本函数
        • ceil():向上最接近的整数
        • floor():向下最接近的整数
        • rint():四舍五入
        • isnan():判断元素是否为空
        • multiply():乘法运算
        • divide():除法运算
        • abs():绝对值
        • **where(conditltion,x,y):类似于三元运算符.**
      • 3.2统计函数
      • 3.3判断相关
      • 3.4去重并排序
      • 3.5去重并排序
    • 4.Numpy的运算
        • 4.1基本运算 :元素个数相等
        • 4.2矩阵运算
        • 场景1: A的列数 = B的行数 且 A的列数 = B的列数
        • 场景2: A的列数 = B的行数 且 A的列数 != B的列数

新手建议使用pycharm当中的jupyter notebook模块

导包

import numpy as np
import pandas as pd
import os
os.chdir(r'D:\Workspace\Work-20\numpyProject') #做个演示,选择更改路径

1.演示Numpy的属性

在这里插入图片描述

演示

# 1. 创建1个 ndarray数组
arr = np.arange(15, dtype=np.int64).reshape((3, 5))  # 3行5列, 二维数组 = 3个一维数组拼接, 每个一维数组有5个元组.
# 2. 打印arr对象
arr
  • 打印Numpy数据类型
打印arr的属性,: ndarray对象的属性.
print(f'arr的数据类型: {type(arr)}')  # <class 'numpy.ndarray'>
  • shape()形状维度
print(f'arr的形状(维度): {arr.shape}')  # (3, 5)
  • ndim() 轴
print(f'arr的轴: {arr.ndim}')  # 2, 几维数组, 轴就是几
  • dtype() 元素类型
print(f'arr的元素类型: {arr.dtype}')  # int
  • size()元素个数
print(f'arr的元素个数: {arr.size}')  # 15
  • itemsize()每个匀速所占大小
print(f'arr每个元素的大小: {arr.itemsize}')  # 4

2.创建Numpy对象

2.1数组方式创建,函数:arrray()

# 细节: 数组的元素类型要统一
# 1. 数组方式创建 ndarray对象(Numpy的核心对象, 即: n维数组)
arr1 = np.array([1, 2, 3])
print(f'arr的内容: {arr1}')
print(f'arr的类型: {type(arr1)}')
print(f'arr的元素类型: {arr1.dtype}')  # int32
# 2. 数组方式创建 ndarray对象(Numpy的核心对象, 即: n维数组)
arr2 = np.array([1.1, 2.3, 3.5])
print(f'arr2的内容: {arr2}')
print(f'arr2的类型: {type(arr2)}')
print(f'arr2的元素类型: {arr2.dtype}')  # float64

2.2创建空的ndarray对象

2.2.1 zeros()
# 细节:获取的元素类型都是: float64
# 1. 演示 zeros()函数, 创建1个全是0的ndarray对象.
arr3 = np.zeros((3, 5))  # 维度: 3行5列, 1个二维数组, 它有3个元素(每个都是1维数组), 且每个一维数组有5个元素.
print(f'arr3的内容: {arr3}')
print(f'arr3的类型: {type(arr3)}')
print(f'arr3的元素类型: {arr3.dtype}')  # float64
2.2.2 ones()
# 2. 演示 ones()函数, 创建1个 全是1的 ndarray对象.
arr4 = np.ones((2, 3))  # 维度: 2行3列, 1个二维数组, 它有2个元素(每个都是1维数组), 且每个一维数组有3个元素.
print(f'arr4的内容: {arr4}')
print(f'arr4的类型: {type(arr4)}')
print(f'arr4的元素类型: {arr4.dtype}')  # float64
2.2.3 empty()
# 3. 演示 empty()函数, 创建1个 内容随机且依赖内存状态的 ndarray对象.
arr5 = np.empty((2, 3))  # 维度: 2行3列, 1个二维数组, 它有2个元素(每个都是1维数组), 且每个一维数组有3个元素.
print(f'arr5的内容: {arr5}')
print(f'arr5的类型: {type(arr5)}')
print(f'arr5的元素类型: {arr5.dtype}')  # float64

2.3创建1个指定范围,步长的ndarray对象:arange()

# 1. 创建1个 指定范围,步长的 ndarray对象, arange()函数 类似于 Python中的 range()函数.
# 参1: 起始值(start), 参2: 结束值(不包括) stop,  参3: 步长, step.  参4: 数据类型, dtype
arr6 = np.arange(0, 10, 2, dtype=np.int64)
print(f'arr6的内容: {arr6}')
print(f'arr6的类型: {type(arr6)}')
print(f'arr6的元素类型: {arr6.dtype}')  # float64

2.4创建二维矩阵:matrix()

# 细节: mat() = matrix(), 效果一致.
# 1. 创建2维矩阵.
# arr7 = np.mat('1 2 3;4 5 6')
arr7 = np.matrix('1 2 3;4 5 6')
print(f'arr7的内容: {arr7}')
print(f'arr7的类型: {type(arr7)}')  # matrix类型是 ndarray类型的 子类型.
print(f'arr7的元素类型: {arr7.dtype}')  # float64
# 2. 创建2维矩阵.
arr8 = np.mat('1,2,3;4,5,6')
print(f'arr8的内容: {arr8}')
print(f'arr8的类型: {type(arr8)}')  # matrix类型是 ndarray类型的 子类型.
print(f'arr8的元素类型: {arr8.dtype}')  # float64
# 3. 创建2维矩阵.
arr9 = np.mat(([1, 2, 3], [4, 5, 6]))  # (第1个1维数组, 第2个一维数组...)
print(f'arr9的内容: {arr9}')
print(f'arr9的类型: {type(arr9)}')  # matrix类型是 ndarray类型的 子类型.
print(f'arr9的元素类型: {arr9.dtype}')  # float64

2.5创建随机的ndarray对象

2.5.1 random.rand():创建0.0 ~ 1.0区间的随机数.
# 1. random.rand()函数, 创建0.0 ~ 1.0区间的随机数.
arr10 = np.random.rand(3, 5)  # 3行5列
print(f'arr10的内容: {arr10}')
print(f'arr10的类型: {type(arr10)}')  # <class 'numpy.ndarray'>
print(f'arr10的元素类型: {arr10.dtype}')  # float64
2.5.2 random.randint():可以指定范围, 生成: 整数的随机数
# 2. random.randint()函数, 可以指定范围, 生成: 整数的随机数
arr11 = np.random.randint(1, 10, size=(3, 5))  # 3行5列
print(f'arr11的内容: {arr11}')
print(f'arr11的类型: {type(arr11)}')  # <class 'numpy.ndarray'>
print(f'arr11的元素类型: {arr11.dtype}')  # float64
2.5.3 random.unifom():可以指定范围, 生成: 小数的随机数
# 3. random.uniform()函数, 可以指定范围, 生成: 小数的随机数
arr12 = np.random.uniform(1, 10, size=(3, 5))  # 3行5列
print(f'arr12的内容: {arr12}')
print(f'arr12的类型: {type(arr12)}')  # <class 'numpy.ndarray'>
print(f'arr12的元素类型: {arr12.dtype}')  # float64

2.6类型转换

  • 对象名.astype(np.类型)
# 1. 创建1个 ndarray对象, 元素类型为: float64
arr13 = np.zeros((3, 5), dtype=np.float64)
print(arr13)
print(arr13.dtype)  # float64
# 2. 把上述的 arr13 从 float64 => int32
arr14 = arr13.astype(np.int32)
print(arr14)
print(arr14.dtype)  # int32

2.7等差和等比数列

2.7.1等比数列
  • logspace(): 等比数列, 默认是: 10的幂, 且: 包左包右
# 1. logspace(): 等比数列, 默认是: 10的幂, 且: 包左包右
arr15 = np.logspace(1, 3, 5)  # 生成10 ^ 1 ~ 10 ^ 3之间, 5个元素
print(f'arr15的内容: {arr15}')
print(f'arr15的类型: {type(arr15)}')  # <class 'numpy.ndarray'>
print(f'arr15的元素类型: {arr15.dtype}')  # float64
  • logspace(): 等比数列, 默认是: 10的幂, 且: 包左包右, 指定底数.
  • base= 指定底数
# 2. logspace(): 等比数列, 默认是: 10的幂, 且: 包左包右, 指定底数.
arr15 = np.logspace(1, 3, 5, base=2)  # 生成2 ^ 1 ~ 2 ^ 3之间, 5个元素
print(f'arr15的内容: {arr15}')
print(f'arr15的类型: {type(arr15)}')  # <class 'numpy.ndarray'>
print(f'arr15的元素类型: {arr15.dtype}')  # float64
2.7.2等差数列
  • linspace默认包左包右, endpoint:默认是True既包括结束值
# 3. linspace(): 等差数列, 默认: 包左包右.
arr16 = np.linspace(1, 10, 5)  # 1 ~ 10之间的, 5个元素.
print(f'arr16的内容: {arr16}')
print(f'arr16的类型: {type(arr16)}')  # <class 'numpy.ndarray'>
print(f'arr16的元素类型: {arr16.dtype}')  # float64
# 4. linspace(): 等差数列, 默认: 包左包右.    endpoint: 默认是True(即: 包括结束值)
arr17 = np.linspace(1, 10, 5, endpoint=False)  # 1 ~ 10之间的, 5个元素.
print(f'arr17的内容: {arr17}')
print(f'arr17的类型: {type(arr17)}')  # <class 'numpy.ndarray'>
print(f'arr17的元素类型: {arr17.dtype}')  # float64

3.numpy的函数

3.1基本函数

# 1. 创建1个正太分布的 ndarray对象.
arr = np.random.randn(2, 3)
arr
#注意:要使用multiply与divide,两个ndarray进行运算shape必须一致.
print(np.ceil(arr))  # 向上取整, 天花板数.
print(np.floor(arr))  # 向下取整, 地板数.
print(np.rint(arr))  # 四舍五入
print(np.isnan(arr))  # 判断是否是: 空值.
print(np.abs(arr))  # 绝对值
print(np.multiply(arr, arr))  # 乘法运算. 
print(np.divide(arr, arr))  # 除法运算. 
print(np.where(arr > 0, 1, -1))  # 转换, 大于0的 => 1, 否则 => -1

3.2统计函数

# 1. 创建1个 ndarray对象.
arr = np.arange(12).reshape(3, 4)  # 3行4列, 二维数组
arr
# 2. 统计函数
print(np.sum(arr))  # 求和: 66
print(np.cumsum(arr))  # 求和: [ 0  1  3  6 10 15 21 28 36 45 55 66]
# 3. 按行或者列进行求和, axis=0 或者 1     0 => 按列计算,  1 => 按行计算
print(np.sum(arr, axis=0))  # [12 15 18 21]
print(np.sum(arr, axis=1))  # [ 6 22 38]

3.3判断相关

# 1. 创建1个 ndarray对象.
arr = np.random.randn(2, 3)
arr
# 2. 演示 any()函数: 任意1个值满足条件即可, 类似于Python中的 or
print(np.any(arr > 0))  # True
# 3. 演示 all()函数: 要求所有的元素都要满足, 类似于Python的and
print(np.all(arr > 0))  # False

3.4去重并排序

# 1. 创建1个 ndarray对象.
arr = np.array([[3, 2, 1, 2], [2, 6, 5, 5]])
print(arr)
# 2. 对上述的 ndarry去重
print(np.unique(arr))  # [1 2 3 5 6]

3.5去重并排序

# 1. 创建1个 ndarray对象.
arr = np.array([3, 1, 2, 5, 6])
print(f'排序前: {arr}')
# 2. 排序, 方式1: np.sort(arr) => 返回1个新的ndarray对象.
# np.sort(arr)
# print(f'排序后: {arr}')new_arr = np.sort(arr)
print(f'排序后: {new_arr}')
# 3. 排序, 方式2: arr.sort() => 对自身进行排序.
arr.sort()
print(f'排序后: {arr}')

4.Numpy的运算

4.1基本运算 :元素个数相等
# 1. 创建两个 ndarray对象.
arr1 = np.array([10, 20, 30, 40])
arr2 = np.arange(4)
# 2. 打印上述的两个对象.
print(f'arr1: {arr1}')
print(f'arr2: {arr2}')
# 3. 基本运算, 并输出结果.
arr3 = arr1 - arr2
print(f'arr3: {arr3}')      # [10 19 28 37]
4.2矩阵运算
  • 场景1: A的列数 = B的行数 且 A的列数 = B的列数
# 1. 创建两个 ndarray对象.
arr1 = np.array([[1, 2], [4, 5]])
arr2 = np.array([[1,3], [4, 6]])# 2. 打印内容.
print(f'arr1: {arr1}')
print(f'arr2: {arr2}')
# 2. 矩阵运算, 场景1: A的列数 = B的行数  且 A的列数 = B的列数
# arr3 = arr1 * arr2
arr3 = np.multiply(arr1, arr2)
print(f'arr3: {arr3}')
  • 场景2: A的列数 = B的行数 且 A的列数 != B的列数
# 3. 矩阵运算, 场景2: A的列数 = B的行数  且 A的列数 != B的列数
# 假设: A => 2行3列,    B => 3行2列  # 3.1 创建两个ndarray对象.
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[1, 2], [4, 5], [-6, 7]])# 3.2 打印内容
print(f'arr1: {arr1}')
print(f'arr2: {arr2}')
# 3.3 矩阵运算.
print(np.dot(arr1, arr2))
print(arr1.dot(arr2))       # [[-9, 33], [-12, 75]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1547626.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

大数据毕业设计选题推荐-内蒙古旅游景点数据分析系统-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

【智能控制】16章 基于Hopfield网络的路径优化,TSP问题

目录 15.6 基于Hopfield网络的路径优化 15.6.1 TSP问题 15.6.2 求解TSP问题的Hopfield神经网络设计 15.6 基于Hopfield网络的路径优化 15.6.1 TSP问题 旅行商问题&#xff08;Traveling Salesman Problem&#xff0c;简称TSP&#xff09;可描述为&#xff1a;已知N个城市之…

C# 的枚举(Enum)应用说明

一.Enum的定义&#xff1a; 枚举是一组命名整型的常量。枚举类型是使用 enum 关键字声明的&#xff0c;它是值类型。枚举包含自己的值&#xff0c;且不能继承或传递继承。 二.声明 enum 变量&#xff1a; 声明枚举的一般语法&#xff1a; enum <enum_name> { enumerati…

如何使用ssm实现基于BS的库存管理软件设计与实现+vue

TOC ssm708基于BS的库存管理软件设计与实现vue 绪论 课题背景 身处网络时代&#xff0c;随着网络系统体系发展的不断成熟和完善&#xff0c;人们的生活也随之发生了很大的变化。目前&#xff0c;人们在追求较高物质生活的同时&#xff0c;也在想着如何使自身的精神内涵得到…

FPGA学习(1)-mux2,2选1多路器

目录 1 开发板配套资料 1.1学习网址和资料网址 2.创建工程文件 2.1创建过程 2.2写程序及仿真测试 2.2.1 写程序生成电路 2.2.2仿真 2.2.3 生成执行文件并烧录 3.实验现象 买的小梅哥店铺的开发板&#xff1a;xc7z020clg400 看的小梅哥的视频&#xff1a;03C _基于ZYN…

Oracle 相关的工具使用 SQL Developer , sqlplus

Oracle 相关的工具使用 SQL Developer &#xff0c; sqlplus 一&#xff0c;Oracle SQL Developer 连接数据库 今天在连接sqldeveloper服务器时遇到了很多问题&#xff0c;但最终还是通过网上的博客解决了问题&#xff0c;我就在总结一下我的解决过程。 一.界面 首先&#…

混拨动态IP代理的优势是什么

在当今互联网时代&#xff0c;隐私保护和网络安全成为了人们关注的焦点。无论是个人用户还是企业&#xff0c;都希望能够在网络上自由、安全地进行各种活动。混拨动态IP代理作为一种新兴的技术手段&#xff0c;正逐渐受到大家的青睐。那么&#xff0c;混拨动态IP代理到底有哪些…

c语言常量变量

c语言常量变量 const 修饰常变量 #define定义标识符常量 #define num 10 //这里不需要分号int anum;enum枚举常量 enum Color {RED,GREEN,BLUE }; int main(){enum Color cRED;//枚举常量不允许修改 }//定义常量 int a10; char ba;错误语法注意 //定义常变量 const int a10…

windows 桌面采集音频

头文件&#xff1a; #ifndef __CAPTURE_AUDIO__ #define __CAPTURE_AUDIO__#include <functional> #include <windows.h> #pragma comment(lib, "winmm.lib")class CaptureAudio { public:CaptureAudio();~CaptureAudio();public:bool Init(const std::…

JSON与CSV之间的主要区别

今天要和大家深入探讨一个数据处理中的常见问题——JSON与CSV之间的主要区别。这两种数据格式各有千秋&#xff0c;适用于不同的场景。让我们一起来了解它们的特点和应用。 一、数据结构的差异 首先&#xff0c;JSON是一种轻量级的数据交换格式&#xff0c;能够表示复杂的数据…

Unity开发绘画板——04.笔刷大小调节

笔刷大小调节 上面的代码中其实我们已经提供了笔刷大小的字段&#xff0c;即brushSize&#xff0c;现在只需要将该字段和界面中的Slider绑定即可&#xff0c;Slider值的范围我们设置为1~20 代码中只需要做如下改动&#xff1a; public Slider brushSizeSlider; //控制笔刷大…

深圳易图讯科技场区态势感知系统

一、功能与目标优化描述&#xff1a; .图像采集、传输、存储与管理系统&#xff1a; 实时采集&#xff1a;利用摄像头、移动摄像设备及微距摄像头&#xff0c;全面覆盖场区内固定点位和重要场地&#xff0c;实现视频图像的实时采集。 高效传输&#xff1a;通过有线、无线网…

秒懂Linux之信号

目录 信号的基本概念 信号的处理方式 默认动作 自定义处理信号 忽略该信号 信号的产生方式 kill命令 键盘组合键 系统调用 软件条件 异常 信号产生的深层理解 core的功能 信号的阻塞 内核中的表示 sigset_t 信号集操作函数 sigprocmask sigpending …

关于最小二乘法

最小二乘法的核心思想简单而优雅&#xff1a;我们希望找到一条最佳的曲线&#xff0c;使其尽可能贴近所有的数据点。想象一下&#xff0c;当你在画布上描绘一条线&#xff0c;目标是让这条线与点的距离最小。数学上&#xff0c;这可以表示为&#xff1a; 在这个公式中&#xff…

基于nodejs+vue的水产品销售管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

【Linux篇】网络编程——I/O复用

目录 一、初识复用 1. 认识复用 2. 复用的优点 3. 复用技术在服务端的应用 二、select 技术 1. 设置文件描述符&#xff08;fd_set&#xff09; 2. 文件描述符的控制 &#xff08;1&#xff09;FD_ZERO &#xff08;2&#xff09;FD_SET &#xff08;3&#xff09;FD…

前端使用 Konva 实现可视化设计器(23)- 绘制曲线、属性面板

本章分享一下如何使用 Konva 绘制基础图形&#xff1a;曲线&#xff0c;以及属性面板的基本实现思路&#xff0c;希望大家继续关注和支持哈&#xff08;多求 5 个 Stars 谢谢&#xff09;&#xff01; 请大家动动小手&#xff0c;给我一个免费的 Star 吧~ 大家如果发现了 Bug&a…

SQL常用数据过滤 - EXISTS运算符

SQL查询中的EXISTS运算符用于检查查询子句是否存在满足特定条件的记录&#xff0c;如果有一条或者多条记录存在&#xff0c;则返回True&#xff0c;否则返回False。 语法结构 SELECT column_name(s)FROM table_nameWHERE EXISTS(SELECT column_name FROM table_name WHERE co…

C++实现二叉树的创建删除,dfslfs,求叶子结点个数,求叶子结点个数,求树的高度

C实现二叉树的创建删除&#xff0c;dfs/lfs,求叶子结点个数&#xff0c;求树的高度 基本算法&#xff1a; 用链栈建立二叉树&#xff0c;通过递归实现深度优先的三种遍历&#xff0c;用队列实现广度优先层次遍历。借助递归思想求解叶子结点个数和树的深度。 tree.h定义基本的…

TMR技术的发展及其应用技术的介绍

目录 概述 1 TMR传感器介绍 1.1 原理介绍 1.2 技术演进历史 2 TMR技术的应用 2.1 电阻特性 2.2 技术比较 2.3 磁道特性 3 多维科技的芯片&#xff08;TMR1202&#xff09; 3.1 芯片介绍 3.2 特性 ​3.3 典型应用 参考文献 概述 本文主要介绍TMR技术的发展及其技术…