Numpy简单入门

2023-11-07

概述

Numpy是高性能科学计算好数据分析的基础包,提供了矩阵运算的功能,在深度学习和数据分析领域广泛应用。。

使用

创建array数组

vector = np.asarray([1,2,3,4]);

创建zero数组

a = np.zeros(10) # 创建向量
 a1 = np.zeros(shape=(5,3)) # 创建5行,3列的0矩阵

创建one矩阵

one = np.ones((3,4));

创建自定义值的矩阵

user_define = np.full((3, 5), 110)  # 创建一个3行5列的矩阵,且填充值为110

创建递增的矩阵

np.arange(0,20,2) # 三个参数,第一个参数表示向量第一个值,第二个参数表示最后的值,第三个参数为步长

使用linspace创建等分的矩阵

np.linspace(0, 10, 5) # 三个参数,第一个参数表示向量开始的值,第二个参数代表向量最后的值,第三个参数表示向量总数

用随机数来创建矩阵

np.random.randint(0,10,size = 10) # 用0到10范围内产生的随机数产生一个长度为10的向量
np.random.randint(4,9,size = (5,3)) # 用4到9范围内的随机数产生一个5行3列的矩阵

用正太分布来创建矩阵

np.random.normal(loc = 1.0, scale = 1.0, size = (3,2)) # 用一个均值loc为1.0,参数为scale为1的正太分布,创建一个3行2列的矩阵

Numpy中的属性

数组维度

ndim 表示数组维度(或轴)的个数。

arr_1_d = np.asarray([1])
arr_2_d = np.asarray([[1, 2], [3, 4]])
print(arr_1_d.ndim) #结果为1,代表arr_1_d为1维矩阵也就是向量
print(arr_2_d.ndim) # 结尾为2

形状

shape 表示数组的维度或形状, 是一个整数的元组类型,元组的长度等于 ndim。

print(arr_1_d.shape) # 结果为
print(arr_2_d.shape) # 结果为[2,2]

shpe这个属性用途很广,借助于reshape()函数我们甚至还可以对数组形状进行改变,但需要保证变换后和变换前矩阵元素数量一致

arr_2_d.reshape((4,1)) # 将arr_2_d reshape为(4,1)的数组

此外reshape还有一个**order参数,**指的是以什么样的顺序读取元素,其中有这样几个参数

  • ‘C’:默认参数,使用类似 C-like 语言(行优先)中的索引方式进行读写。
  • ‘F’:使用类似 Fortran-like 语言(列优先)中的索引方式进行读写。
  • ‘A’:原数组如果是按照‘C’的方式存储数组,则用‘C’的索引对数组进行 reshape,否则使用’F’的索引方式。
np.arange(6).reshape(2,3)
# 结果为
# array([[0, 1, 2],
#       [3, 4, 5]])
np.arange(6).reshape(2,3,order = 'F')
# 结果为
# array([[0, 2, 4],
#       [1, 3, 5]])

size

size,也就是数组元素的总数,它就等于 shape 属性中元素的乘积。

arr_2_d.size # 结果为2

矩阵类型

dtype,它是一个描述数组中元素类型的对象。

使用 dtype 属性可以查看数组所属的数据类型。NumPy 中大部分常见的数据类型都是支持的,例如 int8、int16、int32、float32、float64 等。dtype 是一个常见的属性,在创建数组,数据类型转换时都可以看到它。

arr_2_d.dtype # 结果为dtype('int64')

通过astype()方法,我们可以将老矩阵按照指定类型输出一个新矩阵。

vector = np.arange(1,3)
print(vector.dtype) # 结果为int32
vector = vector.astype(float) # 结果为float64

矩阵运算

矩阵之间的点乘

矩阵乘法要求第一个矩阵的列数要等于第二矩阵的行数,具体点乘的函数为dot()

a = np.arange(1, 6).reshape(2,3) 
b = np.arange(1,7).reshape(3,2)
print(a.shape[1] == b.shape[0])
print(a.dot(b)) 
# 结果
# [[22 28]
# [49 64]]

矩阵的转置

把原来矩阵的行变成列,列变成行

a = np.arange(1,7),reshape(2,3)
print(a.T)
# 结果
[[1 4]
 [2 5]
 [3 6]]

矩阵的逆

如果要求矩阵的逆,首先需要导入numpy.linalg,然后通过linalg的inv函数来求逆,矩阵求逆的条件是矩阵的行数和列数必须相同。

import numpy.linalg as lg
a = np.array([[0,1],[2,3]])
invA = lg.inv(a)
# 结果
print(A.dot(invA))
# 结果
array([[-1.5,  0.5],
       [ 1. ,  0. ]])

arg运算

argmax(a, axis = None, out = None)函数主要用来求一个array中最大值的下标,就是最大数所对应的索引位置是多少。

index = np.argmax([1,2,9,3,2]) # 结果为2

axis代表按照哪个轴来找最大的索引值

总结

从tx实习回来之后忙于秋招、毕设好久没有认认真真的写博客了,今天这一篇就立个flag吧,以后每周都要写一篇博客,保持原有写博客的习惯。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Numpy简单入门 的相关文章

  • Python中Decimal类型的澄清

    每个人都知道 或者至少 每个程序员都应该知道 http docs oracle com cd E19957 01 806 3568 ncg goldberg html 即使用float类型可能会导致精度错误 然而 在某些情况下 精确的解决方
  • Python Popen 与 psexec 挂起 - 不良结果

    我对 subprocess Popen 和我认为是管道的问题有疑问 我有以下代码块 从 cli 运行时 100 都不会出现问题 p subprocess Popen psexec serverName get cmd c ver echo
  • python future 和元组解包

    实现像使用 future 进行元组解包这样的事情的优雅 惯用的方法是什么 我有这样的代码 a b c f x y g a b z h y c 我想将其转换为使用期货 理想情况下我想写一些类似的东西 a b c ex submit f x y
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)

    我已经查看了很多问题 但仍然无法完全弄清楚 我正在使用 PyQt 并且希望能够运行ffmpeg i file mp4 file avi并获取流式输出 以便我可以创建进度条 我看过这些问题 ffmpeg可以显示进度条吗 https stack
  • 如何使用 imaplib 获取“消息 ID”

    我尝试获取一个在操作期间不会更改的唯一 ID 我觉得UID不好 所以我认为 Message ID 是正确的 但我不知道如何获取它 我只知道 imap fetch uid XXXX 有人有解决方案吗 来自 IMAP 文档本身 IMAP4消息号
  • 如何在 pytest 中将单元测试和集成测试分开

    根据维基百科 https en wikipedia org wiki Unit testing Description和各种articles https techbeacon com devops 6 best practices inte
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 使用 Python pandas 计算调整后的成本基础(股票买入/卖出的投资组合分析)

    我正在尝试对我的交易进行投资组合分析 并尝试计算调整后的成本基础价格 我几乎尝试了一切 但似乎没有任何效果 我能够计算调整后的数量 但无法获得调整后的购买价格有人可以帮忙吗 这是示例交易日志原始数据 import pandas as pd
  • 使用 OLS 回归预测未来值(Python、StatsModels、Pandas)

    我目前正在尝试在 Python 中实现 MLR 但不确定如何将我找到的系数应用于未来值 import pandas as pd import statsmodels formula api as sm import statsmodels
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • 如何从Python中的字符串中提取变量名称和值

    我有一根绳子 data var1 id 12345 name John White python中有没有办法将var1提取为python变量 更具体地说 我对字典变量感兴趣 这样我就可以获得变量的值 id和name python 这是由提供
  • 首先对列表中最长的项目进行排序

    我正在使用 lambda 来修改排序的行为 sorted list key lambda item item lower len item 对包含元素的列表进行排序A1 A2 A3 A B1 B2 B3 B 结果是A A1 A2 A3 B
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 使用 Firefox 绕过弹出窗口下载文件:Selenium Python

    我正在使用 selenium 和 python 来从中下载某些文件web page http www oceanenergyireland com testfacility corkharbour observations 我之前一直使用设
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f

随机推荐

  • 知识图谱02

    知识图谱2 一 引言 二 运行环境 三 搭建知识图谱 四 启动问答测试 五 踩坑 1 关于路径 2 报错 一 引言 主要将项目跑起来 对项目有一个宏观的认识 搭建知识图谱 启动问答测试 构建一个简单的基于知识图谱的对话系统 二 运行环境 p
  • table标签-移动端适配

    封装一个组件 该组件需要根据不同设备屏幕宽度自适应调整展示方式 对于 PC 端 以类似 el table 的形式展示数据 而移动端则以一个类似 item 的形式展示每行数据 可以先在组件中判断设备类型 如以下示例代码所示
  • 杀linux进程的几种命令详解

    之前只知道kill killall命令 能杀死进程就行 有些进程杀不死的也不知道为何 今天看书发现出来kill killall命令 还有一个pkill命令 详细看了下他们的介绍和使用 kill杀进程的工作原理 首先了解下kill为何能杀死进
  • STM32学习笔记:ESP8266模块(1)

    由于项目要求要涉及到物联网 公司要采用wifi 于是就采购了一块串口wifi模块 ESP8266 开始拿到后首先应该掌握的就是测试 熟悉AT指令 因为串口wifi通信是采用AT指令进行通信的 在这里需要注意一点的就是 在编写程序的时候 一个
  • 数字图像处理-基于opencv和kreas的手势(手语)识别

    基于opencv和kreas的手势 手语 识别 代码为实验需要 具体使用需要修改 tensorflow教程 推荐看这个 内容一 裁剪视频 获取手势 import cv2 import numpy as np import os import
  • 华为Verilog入门教程

    对于初学者 可大致了解Verolog HDL所提供的能力 掌握Verilog HDL语言的核心子集 1 Verilog HDL语言具有 设计的行为特性 设计的数据流特性 设计的结构组成以及包括响应监控和设计验证方面的时延和波形产生机制 2
  • Linux常用命令--文件搜索命令:用户管理命令

    1 命令名称 useradd 命令所在路径 usr sbin useradd 执行权限 root 语法 useradd 用户名 功能描述 添加新用户 范例 useradd shenchao 2 命令名称 passwd 命令所在路径 usr
  • SpringBoot 如何使用 JProfiler 进行性能测试

    SpringBoot 如何使用 JProfiler 进行性能测试 在 SpringBoot 应用程序中 我们可以使用 JProfiler 进行性能测试 JProfiler 是一款专业的 Java 性能分析工具 可以帮助我们识别和解决应用程序
  • 01 认识数据分析

    数据分析全貌 分析数据的目的是什么 及时发现异常 找到数据之间的因果关系 观测 采集数据 解析系统日志 埋点获取新数据 通过传感器采集 爬虫 API 存储数据 各种类型的数据库 展示数据 可视化高效传达信息 研究关系 可视化 建模 实验 提
  • 在Linux/Ubuntu18.04上给VSCode配置C++调试环境

    本文参考Get Started with C on Linux in Visual Studio Code 来源微软官方教程 为了便于大家快速上手掌握VSCode配置C 的过程 用中文展开来具体说说 在使用C 之前 需要先配置C 调试环境
  • 记一次CentOS+Docker+Nginx+uWSGI+MongoDB的单机并发量提升过程

    无人机拍的广州南站 最近在做小程序后端开发 使用Docker Nginx uWSGI MongoDB的架构 最终部署图如下 最开始在对新增订单的接口进行压测时出现100并发就有大量失败的情况 日志显示 WriteConflict error
  • STM32 USB接口 一键下载电路详解与过程分析

    要想了解一键下载电路的工作过程 首先要了解STM32的几种启动模式 STM32的几种启动模式如下表所示 从表中可知 我们想用串口下载代码 就要配置BOOT0为1 BOOT1为0 但是如果想让STM32一复位就运行代码 就要配置BOOT0为0
  • IT项目管理作业6

    练习 教材练习题6 教材练习题7 收集网上资料 总结看板在软件项目中的使用 约2 3页 练习题6 表6 4显示的是一个小项目网络图中的数据 所有的工期和时间以天来计算 该网络图共有9个节点 活动 起始节点 终止节点 估计的工期 A 1 2
  • RecyclerView 显示不全问题

    按道理ItemCount的数量应该是跟onCreateViewHolder调用次数一致的 但在实际开发中遇到不一致的情况 可能出现的问题 某一个item的高度太高 导致其他的item无法在可显示的范围内 RecyclerView只有在显示范
  • c++类模板案例

    案例要求 创建一个数组类模板 可以对内置数据类型以及自定义数据类型的数据进行存储 将数组中的数据存储到堆区 构造函数中可以传入数组的容量 提供对应的拷贝构造函数以及operator 防止浅拷贝问题 提供尾插法和尾删法对数组中的数据进行增加和
  • JS/jq 实现复选框默认选中

    div div
  • Java-方法的重写(Overriding)和重载(Overloading)

    方法的重载 Overloading 方法的重载是指一个类中定义多个同名的方法 但方法的参数类型 参数个数或参数顺序不同 重载的规则 相同的方法名 参数列表不同 类型 个数 顺序的不同 最好相同的返回值类型 可以不同 可以抛出不同的异常 可以
  • 网页三剑客之 HTML

    本章开始我们来介绍一下网页前端部分 我们只是简单的介绍一些常用的各种标签 其目的在于为我们后面的项目做准备 我们并不要求能完全掌握前端的语法 但是在见到以后能够认识这些代码就可以了 想走后端开发的 前端不需要多么熟悉 毕竟在各个企业中前后端
  • 四种常用的自动化测试框架

    一直想仔细研究框架 写个流水账似的测试程序不难 写个低维护成本的测试框架就很难了 所以研究多种测试框架还是很有必要的 知道孰优孰劣 才能在开始编写框架的时候打好基础 今天读到了KiKi Zhao的翻译文章 觉得很是不错 写了一点学习心得 有
  • Numpy简单入门

    概述 Numpy是高性能科学计算好数据分析的基础包 提供了矩阵运算的功能 在深度学习和数据分析领域广泛应用 使用 创建array数组 vector np asarray 1 2 3 4 创建zero数组 a np zeros 10 创建向量