当前位置: 首页 > 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]])

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 公司新招了个字节拿36K的人,让我见识到了什么才是测试扛把子......
  • 经验笔记:状态机与下推自动机的理解与应用场景
  • 【Linux篇】环境变量
  • linux关闭热点模式,设置开机自启动wifi模式
  • @ohos.systemParameterEnhance系统参数接口调用:控制设备硬件(执行shell命令方式)
  • 【论文阅读】ColabFold: making protein folding accessible to all
  • 初识Vue.js:从零开始构建你的第一个Vue项目
  • JS中DOM详解【十大点】
  • 【C++】提示并输入一个字符串,统计该字符串中字母个数、数字个数、空格个数、其他字符的个数
  • 【归纳总结】常见排序算法及其实现:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快排、归并排序
  • JavaEE-TCP协议
  • 基于x86 平台opencv的图像采集和seetaface6的性别识别功能
  • 【Docker项目实战】使用Docker部署webtop桌面版Linux环境
  • sqli-labs靶场通关攻略(36-40关)
  • 深信服上半年亏损5.92亿,营收同比降低2.3亿
  • JS 中的深拷贝与浅拷贝
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Angular数据绑定机制
  • centos安装java运行环境jdk+tomcat
  • C学习-枚举(九)
  •  D - 粉碎叛乱F - 其他起义
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Javascript基础之Array数组API
  • JS实现简单的MVC模式开发小游戏
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Redux系列x:源码分析
  • Ruby 2.x 源代码分析:扩展 概述
  • 缓存与缓冲
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 使用权重正则化较少模型过拟合
  • 微信小程序:实现悬浮返回和分享按钮
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 走向全栈之MongoDB的使用
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​插件化DPI在商用WIFI中的价值
  • #HarmonyOS:Web组件的使用
  • (4)事件处理——(7)简单事件(Simple events)
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (回溯) LeetCode 40. 组合总和II
  • (理论篇)httpmoudle和httphandler一览
  • (力扣)1314.矩阵区域和
  • (篇九)MySQL常用内置函数
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (学习日记)2024.01.09
  • (转载)虚函数剖析
  • ..回顾17,展望18
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器