Python操作Numpy模块库

news2024/9/23 11:15:40

14天学习训练营导师课程:
杨鑫《Python 自学编程基础》
杨鑫《 Python 网络爬虫基础》
杨鑫《 Scrapy 爬虫框架实战和项目管理》

Python操作Numpy模块库

文章目录

  • Python操作Numpy模块库
  • 1.Numpy介绍
  • 2.Numpy安装
  • 3.Numpy模块练习
    • 3.1 创建数组
    • 3.2 获取数组
    • 3.3 切割数组
    • 3.4 替换数组
    • 3.5 合并数组
    • 3.6 numpy数组的常用属性

杨老师推荐自学Python的网站

w3schools
传送门

geeksforgeeks
传送门

realpython
传送门

引用杨老师说的:
中文的这里不推荐,因为很多机构的翻译水品参差不齐,直接看英文的自己学吧,这个能快速的提升你的技能水平,
不光是编程,还有英语。
你可能会问为什么不推荐书籍,因为书籍的时效性太低了,可能出版之后版本都换了好几轮了,
很多里面的代码都跑不通,具体为什么里也不会给你说,所以直接看网站的教程是最好的选择。

1.Numpy介绍

numpy官方文档介绍

Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展

Numpy是高性能科学计算和数据分析的基础包。它也是pandas等其他数据分析的工具的基础,基本所有数据分析的包都用过它。NumPy为Python带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组。它将常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作

2.Numpy安装

  1. window电脑点击win键+R,输入:cmd

在这里插入图片描述

2.安装 numpy,pip 命令安装 ,我们使用豆瓣的镜像源来安装

pip install numpy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

在这里插入图片描述

3.导包

import numpy as np

3.Numpy模块练习

numpy数组即numpy的ndarray对象,创建numpy数组就是把一个列表传入np.array()方法。

3.1 创建数组

创建一维、二维、三维ndarray对象

# @Time     : 2022/11/24 19:25
# @Author   : hyh
# @File     : Numpy模块练习.py
# @Software : PyCharm

import numpy as np
# np.array? 相当于pycharm的ctrl+鼠标左键

# 创建一维的ndarray对象
arr = np.array([1, 2, 3])
print(arr, type(arr))


# 创建二维的ndarray对象
print(np.array([[1, 2, 3], [4, 5, 6]]))

# 创建三维的ndarray对象
print(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))

执行结果:

在这里插入图片描述

3.2 获取数组

由于numpy数组是多维的,对于二维的数组而言,numpy数组就是既有行又有列。

注意:对于numpy我们一般多讨论二维的数组。

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)

# 获取numpy数组的行和列构成的数组
print(arr.shape)

# 获取numpy数组的行
print(arr.shape[0])

# 获取numpy数组的列
print(arr.shape[1])

执行结果:


[[1 2 3]
 [4 5 6]]

获取numpy数组的行和列构成的数组
(2, 3)

获取numpy数组的行
2

获取numpy数组的列
3

3.3 切割数组

切分numpy数组类似于列表的切割,但是与列表的切割不同的是,numpy数组的切割涉及到行和列的切割,但是两者切割的方式都是从索引0开始,并且取头不取尾。

# @Time     : 2022/11/24 19:45
# @Author   : hyh
# @File     : 切割numpy数组.py
# @Software : PyCharm

import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)

print('取所有元素')
# 取所有元素
print(arr[:, :])


print('取第一行的所有元素')
# 取第一行的所有元素
print(arr[:1, :])

print('取第一列的所有元素')
# 取第一列的所有元素
print(arr[:, :1])

print('取第一列的所有元素')
# 取第一列的所有元素
print(arr[(0, 1, 2), 0])

print('取第一行第一列的元素')
# 取第一行第一列的元素
print(arr[(0, 1, 2), 0])

print('取第一行第一列的元素')
# 取第一行第一列的元素
print(arr[0, 0])

print('取大于5的元素,返回一个数组')
# 取大于5的元素,返回一个数组
print(arr[arr > 5])

print('numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组')
# numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组
print(arr > 5)

执行结果:

"D:\Program Files\Python\Python36\python.exe" D:/E/PythonWork/Pytest2022/CSDN打卡/切割numpy数组.py
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
取所有元素
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
取第一行的所有元素
[[1 2 3 4]]
取第一列的所有元素
[[1]
 [5]
 [9]]
取第一列的所有元素
[1 5 9]
取第一行第一列的元素
[1 5 9]
取第一行第一列的元素
1
取大于5的元素,返回一个数组
[ 6  7  8  9 10 11 12]
numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组
[[False False False False]
 [False  True  True  True]
 [ True  True  True  True]]

Process finished with exit code 0

3.4 替换数组

numpy数组元素的替换,类似于列表元素的替换,并且numpy数组也是一个可变类型的数据,即如果对numpy数组进行替换操作,会修改原numpy数组的元素,所以下面我们用.copy()方法举例numpy数组元素的替换。

# @Time     : 2022/11/24 19:53
# @Author   : hyh
# @File     : numpy数组元素替换.py
# @Software : PyCharm

import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)

print('取第一行的所有元素,并且让第一行的元素都为0')
# 取第一行的所有元素,并且让第一行的元素都为0
arr1 = arr.copy()
arr1[:1, :] = 0
print(arr1)

print('取所有大于5的元素,并且让大于5的元素为0')
# 取所有大于5的元素,并且让大于5的元素为0
arr2 = arr.copy()
arr2[arr > 5] = 0
print(arr2)

print('对numpy数组清零')
# 对numpy数组清零
arr3 = arr.copy()
arr3[:, :] = 0
print(arr3)

执行结果:

"D:\Program Files\Python\Python36\python.exe" D:/E/PythonWork/Pytest2022/CSDN打卡/numpy数组元素替换.py
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
取第一行的所有元素,并且让第一行的元素都为0
[[ 0  0  0  0]
 [ 5  6  7  8]
 [ 9 10 11 12]]
取所有大于5的元素,并且让大于5的元素为0
[[1 2 3 4]
 [5 0 0 0]
 [0 0 0 0]]
对numpy数组清零
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]

Process finished with exit code 0

3.5 合并数组

numpy数组的合并

# @Time     : 2022/11/24 20:39
# @Author   : hyh
# @File     : numpy数组合并.py
# @Software : PyCharm

import numpy as np

arr1 = np.array([[1, 2], [3, 4], [5, 6]])
print(arr1)

arr2 = np.array([[7, 8], [9, 10], [11, 12]])
print(arr2)

print('合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的')
# 合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的
print(np.hstack((arr1, arr2)))

print('合并两个numpy数组,其中axis=1表示合并两个numpy数组的行')
# 合并两个numpy数组,其中axis=1表示合并两个numpy数组的行
print(np.concatenate((arr1, arr2), axis=1))

print('合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的')
# 合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的
print(np.vstack((arr1, arr2)))

print('合并两个numpy数组,其中axis=0表示合并两个numpy数组的列')
# 合并两个numpy数组,其中axis=0表示合并两个numpy数组的列
print(np.concatenate((arr1, arr2), axis=0))

执行结果:

"D:\Program Files\Python\Python36\python.exe" D:/E/PythonWork/Pytest2022/CSDN打卡/numpy数组合并.py
[[1 2]
 [3 4]
 [5 6]]
[[ 7  8]
 [ 9 10]
 [11 12]]
合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的
[[ 1  2  7  8]
 [ 3  4  9 10]
 [ 5  6 11 12]]
合并两个numpy数组,其中axis=1表示合并两个numpy数组的行
[[ 1  2  7  8]
 [ 3  4  9 10]
 [ 5  6 11 12]]
合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的
[[ 1  2]
 [ 3  4]
 [ 5  6]
 [ 7  8]
 [ 9 10]
 [11 12]]
合并两个numpy数组,其中axis=0表示合并两个numpy数组的列
[[ 1  2]
 [ 3  4]
 [ 5  6]
 [ 7  8]
 [ 9 10]
 [11 12]]

Process finished with exit code 0

3.6 numpy数组的常用属性

属性解释
T数组的转置(对高维数组而言)
dtype数组元素的数据类型
size数组元素的数据类型
ndim数组的维数
shape数组的维度大小(以元组形式)
astype类型转换

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

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

相关文章

二叉树路径问题+递归+有关题目

一、分类 1、自顶向下 顾名思义,就是从某一个节点(不一定是根节点),从上向下寻找路径,到某一个节点(不一定是叶节点)结束,具体题目如下:而继续细分的话还可以分成一般路径与给定和的路径 二叉树的所有路径面试题 04…

Qt 利用UDP进行通信

一、UDP的特点 UDP(用户数据报协议)是一种简单轻量级、不可靠、面向数据报,无连接的传输层协议。而TCP/IP协议却是有连接的 二、UDP适合应用的几种情况 1、网络数据大多为短消息 2、拥有大量客户端 3、对数据安全性无特殊要求 4、网络负…

pmap gdb 分析堆外内存泄露情况

一、查看内存分部 pmap -x 8 | sort -k3 -n -r | more ---- 8 是 PID 最大的肯定是堆内存。 其他的就需要看情况来分析了。 二、cat /proc/8/smaps | grep 7fad64000000 -- 8 是 PID , 地址的前4个0需要去掉。查到起止内存地址。 7fad64000000-7fad68000000 r…

Bioinformatics2019 | FP2VEC+:基于新分子特征的分子性质预测

论文标题:FP2VEC:a new molecular featurizer for learning molecular properties 代码: GitHub - wsjeon92/FP2VEC 预测化合物性质最成功的方法之一是定量结构-活性关系(QSAR)方法。 Mol2vec使用分子子结构表将分子结构表示为类似于分子指…

甘露糖-聚乙二醇-CY5 Cy5-PEG-mannose

甘露糖-聚乙二醇-CY5 Cy5-PEG-mannose 中文名称:甘露糖-菁染料CY5 英文名称:mannose-Cyanine5 别称:CY5标记甘露糖,CY5-甘露糖 存储条件:-20C,避光,避湿 外观:固体或粘性液体,取…

设计模式之美——实战MVC的意义

对于一个工程师来说,如果要追求长远发展,你就不能一直只把自己放在执行者的角色,不能只是一个代码实现者,你还要有独立负责一个系统的能力,能端到端(end to end)开发一个完整的系统。这其中的工…

《机械工程基础》复习题

一、填空题: 1. 构件由于受力不同,会产生不同的变形。基本形式有以下五种:1. 弯曲 ;2. 扭转 ; 3. 剪切 ;4. 轴向拉伸 ;5. 轴向压缩 。 2. 在机器中,运动的基本单元称之为__机构_ ___…

ip-guard安全网关问题集锦一

1、忘记安全网关Web管理界面的登录密码如何处理? 重置安全网关Web管理界面的登录密码操作如下: 1、把网线连接电脑和网管的emp端口。 2、修改电脑的Ip为190.190.190.x,子网掩码:255.255.0.0。 3、电脑上访问http://190.190.190.1…

Django Web框架的使用

1.前言 Django是基于Python的重量级开源Web框架。Django拥有高度定制的ORM和大量的API,简单灵活的视图编写、优雅的url、适用于快速开发的模板以及强大的管理后台。 Django简介可以查看菜鸟教程 Django 简介 | 菜鸟教程 2.使用pip安装Django 当我们更换镜像源进…

Windows更新NVIDIA显卡驱动

笔记本显卡联想拯救者Y70001050Ti 1、首先进入GeForce官网,选择顶部的驱动程序。 2、拉到下面手动搜素驱动程序,有以下6个筛选条件。 3、我的显卡是GTX 1050Ti,所以选择的配置情况如下。这里注意下产品系列选择的一定要是带(NoteB…

一款可以协助排查视频是否乱序的软件:BitRecoverFree JPEG Viewer

笔者在做某个嵌入式linux视频项目的过程中,遇到的需求如下:同事在解码进程中将h264解码为RGB数据,发送给Qt进程,我在Qt进程中通过RPC接收RGB图片数据(至于为啥不是接收压缩后的h264数据,这是历史遗留问题&a…

虾皮、Lazada怎么选爆款?测评有哪些方法?

对于一个店铺来说,想要让自己店铺获得更多的流量推广,那么打造出爆款是非常重要的,虾皮、Lazada作为跨境平台也是同样如此,下面就来介绍虾皮、Lazada怎么去选爆款? 1、跟卖 以Shopee、Lazada平台选品,直接“抄”同行…

JavaScript开发工具WebStorm入门教程:开始运行WebStorm(一)

WebStorm是一个JavaScript开发工具,用于JavaScript及其相关技术编码,包括TypeScript、React、Vue、Angular、Node.js、HTML和样式表。就像IntelliJ IDEA和其他JetBrains ide一样,WebStorm让您的开发体验更愉快,自动化日常工作&…

SpringBoot集成Spring Data JPA项目实操

《从零打造项目》系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 SpringBoot集成MybatisPlus项目实操 SpringBoot集成Spring Data JPA项目实操 前言 该说的在《SpringBoot集成Mybatis项目实…

HikariCP源码阅读笔记

加入HikariCP的maven依赖 <dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>4.0.3</version> </dependency> <dependency><groupId>mysql</groupId><artifactId&g…

[附源码]java毕业设计疫情背景下社区公共卫生服务系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

10月BIOTREE协助发表文章再创新高,最高影响因子31.373

10月&#xff0c;BIOTREE在代谢组学、蛋白质组学、多组学方向共收录24篇客户文章&#xff0c;总影响因子&#xff1a;183.749&#xff0c;最高影响因子&#xff1a;31.373&#xff0c;IF>5分有19篇&#xff0c;发表杂志有Cell Metabolism、Clinical Immunology、Cell and Bi…

web网页设计期末课程大作业 HTML+CSS+JavaScript重庆火锅(代码质量好)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

5、设计模式之工厂模式

工厂模式5.1 案例引入5.2简单工厂模式5.2.1 简单工厂模式结构5.2.2 实现5.2.3 优缺点分析5.3 工厂方法模式5.3.1 工厂方法模式结构5.3.2 新需求5.3.3 思路5.3.4 实现5.3.5 优缺点分析5.4 抽象工厂5.4.1 介绍5.4.2 结构5.4.3 实现5.4.4 使用场景5.5 工厂配置文件实现解耦相关文章…

【Vue】pc和移动端网页样式适配

在下面环节会讲解怎么做pc和移动端网页样式适配。 在当下有两种实现样式适配的&#xff1a;JS 适配方案和CSS 媒体查询适配。下面会具体讲解一下代码该怎么写。 &#x1f64f; 希望该文章能帮助到你。 1. JS 适配方案 比如在src/router/index.vue文件中有一个统一的Layout组件包…