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

python玄阶斗技--NumPy入门

目录

一.NumPy介绍

二.创建数组

 1.一维数组创建

2.二维数组创建

3.zeros函数

4.ones函数

5.empty函数

6.arange函数

三.NumPy的数学操作

1.基本运算

2.矩阵运算

3.ndarray类的方法

四.数组堆叠

五.数组分隔


一.NumPy介绍

        在这里对NumPy的介绍我不想扯太多,只要知道NumPy是python中法一个科学计算的基础包,它是一个python库,主要实现多维数组的操作。

        调用NumPy数组的类是ndarray,也称为array。这里我们着重学习一下ndarray以下几个属性:

  • ndarray.ndim  数组轴的个数(维度),称为rank
  • ndarray.shape      数组的维度,例如:n行m列的矩阵,shape是(n,m)
  • ndarray.size   数组元素的总数,等于shape中n和m的积
  • ndarray.dtype    数组中元素类型的对象
  • ndarray.itemsize   数组中每个元素的大小
  • ndarray.data   该缓冲区中包含的实际元素

例如:

import numpy as npnumbers = np.arange(20).reshape(4, 5)
print(numbers.shape)  # 数组维度
print(numbers.ndim)  # 数组维度的个数
print(numbers.dtype.name)
print(numbers.size)  # 数组元素总数
print(numbers.itemsize)  # 数组的每个数组元素的字节大小
'''
(4, 5)
2
int64
20
8
'''

二.创建数组

 1.一维数组创建

import numpy as npnumber = np.array([1, 2,3, 4, 5, 6, 7, 8])  # 注意参数是列表
print(number)
'''
[1 2 3 4 5 6 7 8]
'''

2.二维数组创建

import numpy as npnumber = np.array([(1, 2, 3, 4, 5, 6, 7, 8),( 9, 8, 7, 6, 5, 4, 3, 2)])
print(number)
'''
[[1 2 3 4 5 6 7 8][9 8 7 6 5 4 3 2]]
'''

        多维数组就是在二维的基础上加

3.zeros函数

        zeros函数可以创建元素全为0的数组

import numpy as npnumber = np.zeros((4,5))
print(number)
'''
[[0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.]]
'''

4.ones函数

        ones函数跟上面的zeros函数一样,ones函数创建元素全为1的数组

import numpy as npnumber = np.ones((4,5))
print(number)
'''
[[1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.]]
'''

5.empty函数

        创建一个随机元素的数组

import numpy as npnumber = np.empty((4,5))
print(number)
'''
[[0.  0.  0.3 1.  0. ][0.  1.  1.  1.  1. ][1.  1.  1.  0.  0. ][1.  0.5 0.  0.  1. ]]
'''

6.arange函数

        arange函数和range函数类似,都是在规定范围内生成数

import numpy as npnumber = np.arange(1, 20, 2)
number1 =np.arange(20).reshape(4,5)
print(number)
print(number1)
'''
[ 1  3  5  7  9 11 13 15 17 19][[ 0  1  2  3  4][ 5  6  7  8  9][10 11 12 13 14][15 16 17 18 19]]
'''

三.NumPy的数学操作

1.基本运算

        数组也支持基本的数学操作

import numpy as npa = np.array([1, 9, 4, 7, 2])
b = np.array([3, 5, 2, 8, 3])
c = a + b
f = a - b
d = b * 5
e = a ** 2
print('a:{}\nb:{}\n加法:{}\n减法:{}\nb乘5:{}\na的平方:{}'.format(a, b, c, f, d, e))
'''
a:[1 9 4 7 2]
b:[3 5 2 8 3]
加法:[ 4 14  6 15  5]
减法:[-2  4  2 -1 -1]
b乘5:[15 25 10 40 15]
a的平方:[ 1 81 16 49  4]
'''

2.矩阵运算

        数组的乘法运算用*号,矩阵乘法可以用@或dot函数

import numpy as npa = np.array([1, 9, 4, 7, 2])
b = np.array([3, 5, 2, 8, 3])
print('乘法:{}\n矩阵乘法:{}或{}'.format(a*b,a@b,a.dot(b)))
'''
乘法:[ 3 45  8 56  6]
矩阵乘法:118或118
'''

3.ndarray类的方法

        ndarray类的几个方法,sum方法求元素和,min求元素最小值,max求元素最大值

import numpy as npa = np.array([1, 9, 4, 7, 2])
print('sum:{}\nmax:{}\nmin:{}'.format(a.sum(),a.max(),a.min()))
'''
sum:23
max:9
min:1
'''

四.数组堆叠

        数组的堆叠就是多个数组合成一个数组,其中,vstack()垂直堆叠,hstack()水平堆叠,column_stack将第一个数组按列堆叠到第二个数组中

import numpy as npa = np.array([1, 9, 4, 7, 2])
b = np.array([3, 4, 2, 6, 8])
print('vstack:\n{}\nhstack:\n{}\ncolumn_stack:\n{}'.format(np.vstack((a, b)), np.hstack((a, b)), np.column_stack((a, b))))
'''
vstack:
[[1 9 4 7 2][3 4 2 6 8]]
hstack:
[1 9 4 7 2 3 4 2 6 8]
column_stack:
[[1 3][9 4][4 2][7 6][2 8]]
'''

五.数组分隔

        hspalit()按列拆分(水平),vspalit()按行拆分(垂直),array_split()按要求拆分数组个数

hsplit(ary,indice_or_section) # 后一个参数表示拆分的轴vsplit(ary,indice_or_section)aray_split(ary,indices_or_section,axis=0) # axis表示拆分子数组的个数
import numpy as npa = np.arange(20)
b = np.arange(20).reshape(4, 5)
c = np.arange(20).reshape(4, 5)
print('按第二列拆分:{}'.format(np.hsplit(a, 2)))
print('按第二行拆分:{}'.format(np.vsplit(b, 2)))
print('拆分为2个子数组:{}'.format(np.array_split(c, 2)))
'''
按第二列拆分:[array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])]
按第二行拆分:[array([[0, 1, 2, 3, 4],[5, 6, 7, 8, 9]]), array([[10, 11, 12, 13, 14],[15, 16, 17, 18, 19]])]
拆分为2个子数组:[array([[0, 1, 2, 3, 4],[5, 6, 7, 8, 9]]), array([[10, 11, 12, 13, 14],[15, 16, 17, 18, 19]])]
'''

相关文章:

python玄阶斗技--NumPy入门

目录 一.NumPy介绍 二.创建数组 1.一维数组创建 2.二维数组创建 3.zeros函数 4.ones函数 5.empty函数 6.arange函数 三.NumPy的数学操作 1.基本运算 2.矩阵运算 3.ndarray类的方法 四.数组堆叠 五.数组分隔 一.NumPy介绍 在这里对NumPy的介绍我不想扯太多&#xf…...

VR黑科技丨远离拥挤,VR直播开启沉浸式赏樱新姿势

春光兮婉转,珞樱兮盛绽,又是一年樱花季,全国各地大部分地区的樱花进入盛花期,尤其是武汉,东湖樱园踏青赏花的游人如织、摩肩擦踵,勾勒一幅“人人人人人人人花人人人人人”的盛景。 为了一睹樱花“芳容”&am…...

ts的一些用法

1.交叉类型 & ---多个类型属性的集合 1.1类型别名实现 type Person {name:string} type Children Person & {age:number} let newPerson:Children {// name:hahah,name:hhaah,age:18 } 1.2 接口类型实现 interface Inter1{name:string } interface Inter2{name:…...

云计算面试总结

shell脚本对日志进行备份 shell 对日志备份 #!/bin/bash if [ -d /log/bak/ ] || mkdir -p /log/bak/ thentar Pcf /log/bak/log_$(date %Y%m%d)$(date %H%M%S).tar.gz /var/log/*.logecho "干完!可以约会啦" fi存在的问题: 说的太快&a…...

(DP)买不到的数目【蓝桥杯】(裴蜀定理)

买不到的数目 小明开了一家糖果店。 他别出心裁:把水果糖包成4颗一包和7颗一包的两种。 糖果不能拆包卖。 小朋友来买糖的时候,他就用这两种包装来组合。 当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。 你可以用计算机测试一下&#…...

Docker使用DockerFile部署Go项目

Docker使用DockerFile部署Go项目1. 文章说明2. Go项目打包到Linux2.1 学习链接与知识点2.2. 打包生成 main 文件2.3 Docker部署Go项目1. 文章说明 目的:将打包生成的 main 文件,在Docker里面,使用Dockerfile文件,生成镜像与容器&…...

C++ Primer第五版_第七章习题答案(31~40)

文章目录练习7.31练习7.32练习7.33练习7.34练习7.35练习7.36练习7.37练习7.38练习7.29练习7.40练习7.31 定义一对类X 和Y,其中X 包含一个指向 Y 的指针,而Y 包含一个类型为 X 的对象。 class Y;class X{Y* y nullptr; };class Y{X x; };练习7.32 定义你…...

基于springboot实现学生成绩管理系统【源码+论文】分享

基于springboot实现学生成绩管理系统演示开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&…...

Linux diff 命令

Linux diff 命令用于比较文件的差异。 diff 以逐行的方式&#xff0c;比较文本文件的异同处。如果指定要比较目录&#xff0c;则 diff 会比较目录中相同文件名的文件&#xff0c;但不会比较其中子目录。 语法 diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数&g…...

unity动画状态机

介绍&#xff1a; 动画状态机&#xff08;Animation State Machine&#xff09;是Unity中用于控制动画状态转换的工具&#xff0c;它由多个状态&#xff08;State&#xff09;和转换&#xff08;Transition&#xff09;组成&#xff0c;可以通过状态转换来控制动画的播放行为。…...

溯源(五)之攻击源的获取

溯源&#xff08;一&#xff09;之溯源的概念与意义 溯源&#xff08;二&#xff09;之 windows-还原攻击路径 溯源&#xff08;三&#xff09;之Linux-入侵排查 溯源&#xff08;四&#xff09;之流量分析-Wireshark使用 溯源整体流程的思维导图 攻击源的获取 1、获取哪些数…...

【redis】redis淘汰策略

一、说明 1.redis key没有设置过期时间被redis主动删除了 2.当redis已用内存超过maxmemory限定时&#xff0c;触发主动清理策略 3.主动清理策略在redis4.0之前一共实现了6种内存淘汰策略&#xff0c;在4.0之后&#xff0c;增加了2种&#xff0c;总共8种 二、淘汰策略 2.1 针对…...

指针和数组(二)

目录 指针和数组 数组名和指针的区别 多维数组 数组指针 语法 作用 内存大小 自增运算 【】运算 指针和数组 结论&#xff1a;数组的本质就是指针。数组的【】运算同样可以用指针来运算 证明 C代码 int array[5];int* ptr{ &array[0] };*ptr 5;array[0] 5;arr…...

Linux WIFI 驱动实验

目录WIFI 驱动添加与编译向Linux 内核添加WIFI 驱动配置Linux 内核编译WIFI 驱动驱动加载测试wireless tools 工具移植与测试wireless tools 移植wireless tools 工具测试wpa_supplicant 移植openssl 移植libnl 库移植wpa_supplicant 移植WIFI 联网测试RTL8188 USB WIFI 联网测…...

UART驱动情景分析-write

一、write过程分析 App写&#xff1a; 使用行规程来写数据最终存入uart_state->xmit的buffer里 硬件发送&#xff1a; 使用硬件驱动中uart_ops->start_tx开始发送具体的发送方式有两种&#xff1a;通过DMA、通过中断 中断方式&#xff1a; 方法1&#xff1a;直接使能tx …...

Metasploit入门到高级【第四章】

来自公粽号&#xff1a;Kali与编程预计更新第一章&#xff1a;Metasploit 简介 Metasploit 是什么Metasploit 的历史和发展Metasploit 的组成部分 第二章&#xff1a;Kali Linux 入门 Kali Linux 简介Kali Linux 安装和配置常用命令和工具介绍 第三章&#xff1a;Metasploi…...

java 继承super

在java继承中&#xff0c;如果子类继承父类&#xff0c;在子类中要给用构造器给父类的属性赋值&#xff0c;需要用到 super 举例&#xff0c;Son类继承Father 类&#xff0c;便于理解 在 new Son(String name, int age) 传入name&#xff0c;和age的值 将会调用Son这个构造器…...

Java学习笔记——多态

2.1 概述 引入 多态是继封装、继承之后&#xff0c;面向对象的第三大特征。 生活中&#xff0c;比如跑的动作&#xff0c;小猫&#xff0c;小狗和大象&#xff0c;跑起来都是不一样的。再比如飞的动作&#xff0c;昆虫、鸟类和飞机&#xff0c;飞起来是不一样的。可见&#x…...

Python处理JSON数据

Python和JSON JavaScript Object Notation (JSON) 是一种轻量级的数据交换格式&#xff0c;通常用于Web应用程序之间的数据交换。JSON的设计使得它非常易于人和机器阅读和编写。JSON数据格式与Python数据结构非常相似&#xff0c;因此Python中提供了一个json模块&#xff0c;用…...

JVM信息查询命令

1、查询jar包运行进程 jps #通过jps命令找出jar的进程IDps -ef|grep xxxx #通过包名找出进程ID2、查询JVM的堆信息 jmap -heap pid #通过jmap命令查询堆信息rootd57bff9f-c8nvn:/apps# jmap -heap 6 Picked up JAVA_TOOL_OPTIONS: -Xloggc:/data/tsf_apm/monitor/jvm…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...