当前位置: 首页 > news >正文

Python 数据分析笔记— Numpy 基本操作(上)

文章目录

  • 学习内容:
    • 一、什么是数组、矩阵
    • 二、创建与访问数组
    • 三、矩阵基本操作

学习内容:

一、什么是数组、矩阵

数组(Array):是有序的元素序列,可以是一维、二维、多维。

array1 = [1,2,3]['a', 'b', 'c', 'd']
array2 = [[1,2,3],[4,5,6]]

矩阵(Matrix):是一个按照长方阵列排列的复数或实数集合。
在这里插入图片描述
基本运算
加(减)法: 对有相同行数与列数的数组(矩阵)的各项数字相加(减),得到新数组(矩阵)。
在这里插入图片描述
在这里插入图片描述
乘法:
1.数组乘法:对有相同行、列数的数组相乘得到新数组。

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
b = np.array([[4,5,6],[7,8,9]])
a * b # 将数组a、b的对应项相乘
#输出:array([[ 4, 10, 18], [28, 40, 54]])

2.矩阵乘法:矩阵A 、B相乘,必须矩阵B行数==矩阵A列数。
在这里插入图片描述

二、创建与访问数组

(一)创建数组
1. 通过 python list 创建数组(array())

import numpy as np
np.array([1,2,3])
#输出:array([1, 2, 3])

2. 创建全零数组(zeros(行数,列数))

np.zeros((2,3)) # 创建一个2行3列的全0数组
#输出:array([[0., 0., 0.], [0., 0., 0.]])

3. 创建全1数组(ones(行数,列数))

np.ones((2,3)) # 创建一个2行3列的全1数组
#输出:array([[1., 1., 1.], [1., 1., 1.]])

4. 生成一个单位矩阵(行列号相同为1,其余置0)(eye(行数,列数))

np.eye(3,4)
#输出:array([[1., 0., 0., 0.],
#            [0., 1., 0., 0.],
#            [0., 0., 1., 0.]])

5. 创建间隔相等的数字数组(arange(含开始值, 不含结束值, 间隔值(可为小数))

np.arange(1, 5, 0.5)
#输出:array([1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
np.arange(5) # 生成[0-4]的整数数组

6. 随机生成数组
随机生成N个 [0-1) 之间的数组(np.random.rand(N))

np.random.rand(5)
#输出:array([0.74466065, 0.60475285, 0.01624092, 0.23405253, 0.31129117])

随机生成N个服从标准正态分布的数据(np.random.randn(N))

np.random.randn(3)
#输出:array([ 0.5861455 , -1.74517127, -0.04381483])

随机生成任意整数数组(np.random.randint(low: 下限,high:上限,size: 个数))

np.random.randint(10) # 生成1个[0-9]之间的整数
np.random.randint(10,size=5) # 生成5个[0-9]之间的整数数组
np.random.randint(10,20) #生成1个[10-20)之间的整数
np.random.randint(10,20,5) # 生成5个[10-20)之间的整数数组

7. 将转换数组维度(reshape(一维数,[二维数, 三维数, …]),要求转换前后元素个数相同

a = np.array([1,2,3,4,5,6,7,8])
a.reshape(2,4) # 将一维数组转为2行4列的二维数组
#输出:array([[1, 2, 3, 4],
#            [5, 6, 7, 8]])
b = np.array([[1, 2, 3],[4, 5, 6]])
b.reshape(6) # 将二维数组转为一组数组
#输出:array([1,2,3,4,5,6])

**(二)查看数组对象属性

list_a = [1,2,3,4]
array_a = np.array(list_a)
array_b = np.array([list_a, list_a])

1. 查看数组维度(ndim)

array_a.ndim # 维度为1
#输出:1
array_b.ndim # 维度为2
#输出:2

2. 查看数组大小(shape)

array_a.shape
#输出(4,)
array_b.shape
#输出(2,4)

3. 查看数组元素个数(size)

array_a.size # 4个
array_b.size # 8个

4. 查看数组元素数据类型(dtype)

array_a.dtype
#输出:dtype('int64')

三、矩阵基本操作

1. 用二维数组生成矩阵(matrix())

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
np.matrix(a)
#输出:matrix([[1, 2, 3],
#             [4, 5, 6],
#             [7, 8, 9]])
matrix_a = np.matrix(a)

2. 矩阵加(减运算)

matrix_a + matrix_a
#输出:matrix([[ 2,  4,  6],
#             [ 8, 10, 12],
#             [14, 16, 18]])
matrix_a - matrix_a
#输出:matrix([[0, 0, 0],
#             [0, 0, 0],
#             [0, 0, 0]])

3. 矩阵乘 (矩阵B.dot(矩阵A)),要求矩阵B列数与矩阵A行数相同,结果为B行,A列数组。

a = np.arange(8).reshape(2,4) # 生成一个2行4列的二维数组
matrix_a = np.matrix(a)
#矩阵a结构如下:
matrix([[0, 1, 2, 3],[4, 5, 6, 7]])
b = np.arange(6).reshape(3,2) # 生成一个2行4列的二维数组
matrix_b = np.matrix(b)
#矩阵b结构如下:
matrix([[0, 1],[2, 3],[4, 5]])
matrix_b.dot(matrix_a)
#输出如下
matrix([[ 4,  5,  6,  7],[12, 17, 22, 27],[20, 29, 38, 47]])

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++笔记---模板初阶
  • Elasticsearch7.14.2集群部署和elk部署
  • C#中通过TabControl控制MDI子窗体显示切换的实现过程
  • jmeter响应断言、json断言、断言持续时间、大小断言操作
  • pytest.mark简介
  • RabbitMQ中的死信交换机?(RabbitMQ延迟队列有了解过吗)
  • [Labview] 表格改值后单元格编辑功能,更改颜色、字体、颜色等
  • sqli-labs靶场通关攻略(五十一到五十六关)
  • 数据线性结构
  • Notepad++回车不自动补全
  • opencv之形态学
  • flutter 类似Android 中RelativeLayout在末尾居中
  • Golang | Leetcode Golang题解之第386题字典序排数
  • STM32(八):定时器——输入捕获实验
  • [译] APT分析报告:12.APT29利用spy软件供应商创建的IOS、Chrome漏洞
  • python3.6+scrapy+mysql 爬虫实战
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • echarts花样作死的坑
  • E-HPC支持多队列管理和自动伸缩
  • Java超时控制的实现
  • js继承的实现方法
  • Laravel5.4 Queues队列学习
  • Sublime text 3 3103 注册码
  • windows下如何用phpstorm同步测试服务器
  • 前端工程化(Gulp、Webpack)-webpack
  • 前端知识点整理(待续)
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 使用Swoole加速Laravel(正式环境中)
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 原生js练习题---第五课
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​数据链路层——流量控制可靠传输机制 ​
  • #NOIP 2014# day.2 T2 寻找道路
  • #每天一道面试题# 什么是MySQL的回表查询
  • ${ }的特别功能
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (分享)自己整理的一些简单awk实用语句
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (七)理解angular中的module和injector,即依赖注入
  • (三)uboot源码分析
  • (十三)Flask之特殊装饰器详解
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)VirtualBox安装增强功能
  • (转)nsfocus-绿盟科技笔试题目
  • (转)Unity3DUnity3D在android下调试
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • **CI中自动类加载的用法总结
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net Core 中间件验签
  • .NET Project Open Day(2011.11.13)
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .net开发日常笔记(持续更新)