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

news2024/9/22 5:29:24

文章目录

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

学习内容:

一、什么是数组、矩阵

数组(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]])

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

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

相关文章

如何通过住宅代理进行高效SSL检查

引言 什么是SSL检查?有哪些内容? 为什么要使用SSL检查? SSL检查是如何进行的? 总结 引言 在现代互联网环境中,SSL/TLS协议已成为确保网络通信安全的基石。随着网络攻击手段的不断演进,仅仅依赖于基础的…

[Leetcode 47][Medium]-全排列 II-回溯(全排列问题)

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 原题地址 二、整体思路 和上一道Leetcode46相比,有变化的地方是要排除重复组合的情况。那么在组合问题中去除重复组合的方法是先对数组进行排序,然后在回溯函数中判断当前元素与上一个元素是否相同,若相同…

Kotaemon:开源的RAG UI

检索增强生成 (RAG) 已成为一种改变游戏规则的方法,可增强大型语言模型的功能。Kotaemon 是由 Cinnamon 开发的开源项目,它站在这项创新的最前沿,提供了一个简洁、可定制且功能丰富的基于 RAG 的用户界面,用于与文档聊天。 Kotae…

【再回顾面向对象】,关键字Satic、final

再回顾面对对象 object:所有类的祖先,所有类的方法 GC:垃圾回收站 一般不会回收对象——Car c new Car(); toString() Hashchde要跟地址对应 尽量不要自己产生跟指针不一样,指针是直接指向地址像是数组的索引找的时候可能会有…

AcWing 902. 最短编辑距离

视频讲解&#xff1a; 【E07 线性DP 编辑距离】 两套代码的字符串存储数组都是从1开始存储的&#xff01;&#xff01;&#xff01;&#xff01; 硬套公式&#xff1a; #include<iostream> #include<algorithm> const int N 1010; using namespace std; int …

文心快码前端工程师观点分享:人机协同新模式的探索之路(一)

&#x1f381;&#x1f449;点击进入文心快码 Baidu Comate 官网&#xff0c;体验智能编码之旅&#xff0c;还有超多福利&#xff01;&#x1f381; 本系列视频来自百度工程效能部的前端研发经理杨经纬&#xff0c;她在由开源中国主办的“AI编程革新研发效能”OSC源创会杭州站1…

mysql基础练习题 1082.销售分析1 (力扣)

1082.编写解决方案&#xff0c;找出总销售额最高的销售者&#xff0c;如果有并列的&#xff0c;就都展示出来。 题目链接&#xff1a; https://leetcode.cn/problems/sales-analysis-i/description/ 建表插入数据&#xff1a; Create table If Not Exists Product (product…

[数据集][目标检测]玉米病害检测数据集VOC+YOLO格式6000张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;6000 标注数量(xml文件个数)&#xff1a;6000 标注数量(txt文件个数)&#xff1a;6000 标注…

提升学术写作效率:ChatGPT的70个必知技巧!

于其卓越的性能&#xff0c;ChatGPT极大地提升了各行各业的工作效率。正确运用关键词是激发ChatGPT潜能的关键。歪歪学长精心挑选了一系列关键词&#xff0c;通过这些关键词的运用&#xff0c;不仅能简化写作流程&#xff0c;还能提升学术研究成果。共有14个方面&#xff0c;全…

Java 入门指南:Java 并发编程 —— ReentrantLock 实现悲观锁(Pessimistic Locking)

悲观锁 悲观锁&#xff08;Pessimistic Locking&#xff09;是一种悲观的并发控制机制&#xff0c;它基于悲观的假设&#xff0c;即并发冲突会时常发生&#xff0c;因此在访问共享资源&#xff08;如数据库记录或共享变量&#xff09;之前&#xff0c;会先获取独占性的锁&…

内存管理篇-17解开页表的神秘面纱-下

1.页表初探遗留问题-页表的创建过程 使用MMU之前&#xff0c;页表要准备好&#xff0c;怎么准备的&#xff1f;如何把物理内存通过section映射构建页表页表的创建过程分析&#xff1a;__create_page_tables--创建临时页表&#xff0c;然后在开启MMU 页表的大小和用途页表在内存…

您应该使用哪个矢量数据库? 选择最适合您需求的数据库

导言 矢量数据库已成为存储非结构化和结构化数据表示并编制索引的首选。 这些表征被称为向量嵌入&#xff0c;由嵌入模型生成。 向量存储在利用深度学习模型&#xff08;尤其是大型语言模型&#xff09;的应用开发中发挥着至关重要的作用。 什么是矢量数据库&#xff1f; 在…

中国文化艺术孙溟展浅析《绛帖》

孙溟展浅析《绛帖》 《绛帖》是汇集摹刻众多名帖。北宋时潘师旦共摹刻二十卷&#xff0c;以《淳化阁帖》为基础有增加和删减&#xff0c;因为是在降州《今山西新降》摹刻的故此而得名。 《绛帖》 《绛帖》 《绛帖》 《绛帖》 据传潘师旦去世后&#xff0c;他的两个儿子各…

双硬盘双系统怎么装?双硬盘双系统安装教程(win7+win10双系统)

最近有很网友想双硬盘装双系统&#xff0c;考虑到如果哪块硬盘坏了我另一块硬盘还可以启动&#xff0c;以防万一硬盘坏了一块无法使用问题&#xff0c;今天小编给大家带来的双硬盘双系统方法教程。 相关推荐&#xff1a; 如何安装双系统?安装双系统详细步骤 双系统怎么设置启动…

个人旅游网(2.1)——使用阿里云在springboot项目中发送短信

文章目录 一、背景介绍二、详细步骤2.1、申请资质2.2、申请签名2.3、申请模板2.4、申请accessKey秘钥对2.5、SDK的使用[!]2.5.1、项目中导入依赖2.5.2、发短信的工具类 一、背景介绍 验证码发送背后的功能原理图&#xff1a; 想要在项目中实现上述发送验证码的功能&#xff0c…

操作系统面试真题总结(三)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 什么是进程&#xff1f; 在操作系统中&#xff0c;进程是指正在执…

8月31复盘日记

8月31复盘日记 前言今日感恩今日记录今日感悟今日名言 前言 昨天因为回到宿舍比较晚&#xff0c;所以来不及进行记录。   昨天早上五点多就醒了&#xff0c;可能是睡眠质量特别好&#xff0c;基本一倒头就是深度睡眠。所以我直接就起床去健身房运动&#xff0c;练了臀和核心&…

FastAPI+Vue3零基础开发ERP系统项目实战课 20240831上课笔记 路径参数

遗留的问题 3、FastAPI4、MySQL85、SQLModel&#xff0c;和FastAPI框架是同一个作者&#xff0c;两者结合比较好用&#xff0c;但是学习成本较高&#xff0c;使用难度稍大6、Vue37、Tailwindcss8、Ant Design Vue&#xff0c;UI组件库9、数据同步&#xff1a;有一个API&#x…

基于卷积神经网络的磨削平板类零件擦伤检测

基于卷积神经网络的磨削平板类零件擦伤检测 前言正文 前言 还记得读研那会儿刚学习完了卷积神经网络&#xff0c;初步学会了最基础的分类问题&#xff0c;当时也有点python基础&#xff0c;同时对TensorFlow也有点入门了。正好我的课题中有一类缺陷比较难以用传统方法识别判断&…

Vue60 插槽

插槽 作用&#xff1a;让父组件可以向子组件指定位置插入html结构&#xff0c;也是一种组件间通信的方式&#xff0c;适用于 父组件 > 子组件 。 分类&#xff1a;默认插槽、具名插槽、作用域插槽 使用方式&#xff1a; 默认插槽&#xff1a; 父组件中&#xff1a;<Cat…