python数组基本使用

news2024/11/27 17:54:06

使用Numpy进行数组运算

相比 List,NumPy 数组的优势
NumPy 全称为 Numerical Python,是 Python 的一个以矩阵为主的用于科学计算的基础软件包。NumPy 和 Pandas、Matpotlib 经常结合一起使用,所以被人们合称为数据分析三剑客。Numpy 中有功能强大的 ndarray 对象,能创建 N 维的数组,另外还提供很多通用函数,支持对数组的元素进行操作、支持对数组进行算法运算以及提供常用的统计函数

相比 List 对象,NumPy 数组有以下优势:
这是因为列表 list 的元素在系统内存中是分散存储的,而 NumPy 数组存储在一个均匀连续的内存块中。这样数组计算遍历所有元素,不像列表 list 还需要对内存地址进行查找,从而节省了计算资源。
Numpy数组能够运用向量化运算来处理整个数组,速度较快;而 Python 的列表则通常需要借助循环语句遍历列表,运行效率相对来说要差。
NumPy 中的矩阵计算可以采用多线程的方式,充分利用多核 CPU 计算资源,大大提升了计算效率。
Numpy 使用了优化过的 C API,运算速度较快。

创建一、二维数组

import numpy as np

one = np.array([1,2,3])
two = np.array([[1,2,3],[4,5,6]])

print(one)
print(two)

print('one: ', one.shape)
print('two: ', two.shape)

其中 shape 是数组的一个属性,表示获取数组大小(有多少行,有多少列),如果是一维数组,则只显示(行,)。代码中打印出 nd_two 的形状,输出为(2,3),表示数组中有 2 行 3 列。
二维数组需要2个以上[],([[1,2,3],[4,5,6]])。

在这里插入图片描述
使用内置函数创建数组

x0 = np.arange(1,20,3)
print(x0)

x2 = np.arange(10)
print(x2)

x1 = np.arange(15).reshape((5,3))
print(x1)
print(type(x1))


x3 = np.full((5,4),10,dtype=int)
print(x3)

x4 = np.eye(3,dtype=int)
print(x4)

x5 = np.random.randint(0,100,(4,5))
print(x5)

在这里插入图片描述

矩阵乘法

import numpy as np

# 矩阵的点乘
x1 = np.array([1,2,3,4])
print(x1)
theat = np.array([1,2,3,4]).T #转置
y = np.dot(theat,x1)
print(y)
print(type(y))

# 矩阵相乘
x2 = np.array([[1,2,3],[3,2,1],[4,5,6]])
y2 = np.array([1,2,3]).T
print(y2)
yy = np.dot(x2,y2)
print(yy)

使用 zeros(),ones(),full() 创建数组

import numpy as np
# 创建一个 3x4 的数组且所有值全为 0
x3 = np.zeros((3, 4), dtype=int)
print(x3)
# 创建一个 3x4 的数组且所有元素值全为 1
x4 = np.ones((3, 4), dtype=int)
print(x4)
# 创建一个 3x4 的数组,然后将所有元素的值填充为 2
x5 = np.full((3, 4), 2, dtype=int)
print(x5)

>>> 运行结果:

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]

[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]

[[2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]]

使用 eye() 创建单位矩阵

eye() 创建的数组特点是行数和列数都是一样。因为它创建出来的是单位矩阵,单位矩阵是正形矩阵,对角线的值均为 1,其他位置的值为 0。

import numpy as np
# 创建 3x3 的单位矩阵
x6 = np.eye(3, dtype=int)
print(x6)

>>> 运行结果:

[[1 0 0]
 [0 1 0]
 [0 0 1]]


4 使用 diag() 创建对角矩阵
diag() 是创建一个 NxN 的对角矩阵,对角矩阵是对角线上的主对角线之外的元素皆为 0 的矩阵。

import numpy as np
x7 = np.diag([1, 2, 3])
print(x7)

>>> 运行结果:

[[1 0 0]
 [0 2 0]
 [0 0 3]]

使用 random 创建随机数组

numpy 中的 random 中有很多内置函数,能简单介绍其中的几种。

import numpy as np
# 创建 2x2 数组且所有值是随机填充
x9 = np.random.random((2, 2))
print(x9)

# 创建一个值在 [0, 10) 区间的 3x3 的随机整数
x10 = np.random.randint(0, 10, (3, 3))
print(x10)

>>> 运行结果:

[[ 0.77233522  0.41516417]
 [ 0.22350126  0.31611254]]

[[0 6 5]
 [7 6 4]
 [5 5 9]]

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

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

相关文章

网卡挂载与连接wifi

Viobot设备本身不具备无线功能,我们其实更推荐使用有线连接的方式使用,这样会更稳定,但如果确实想要使用无线测试的话,我们提供了无线网卡的驱动和安装方式。 无线网卡驱动属于外接的驱动,需要编译系统对应的驱动文件…

win10电脑记事本在哪里?电脑记事本如何查看字数?

在日常工作中,我们会遇到许多需要记录的信息和事项,而使用电脑记事本工具可以帮助我们方便地保存、管理这些内容。无论是记录工作会议的要点、制定工作计划,还是记录灵感和创意,电脑记事本都是非常实用的工具。 那么win10电脑记事…

nacos服务器启动报错集合

报错1 Error creating bean with name ‘user‘: Unsatisfied dependency expressed through field ‘jwtTokenManage 开启鉴权之后,你可以自定义用于生成JWT令牌的密钥,application.properties中的配置信息为: ### Since 1.4.1, worked when…

银联iso8583协议报文解析

最近在研究银联的ISO8583协议,涉及到报文这方面的东西,感觉挺多的,分享一下,或许对你有帮助。 ISO8583协议解决的核心问题: 明确了报文每个字段的数据类型,是数字还是字符,都能定义清楚 支持64…

ARMS 助力极氪提效服务应急响应,为安全出行保驾护航

作者:比扬 01 客户介绍与项目背景 浙江极氪智能科技有限公司于 2021 年 3 月成立,2021 年 4 月发布极氪品牌及旗下首款产品——极氪 001。极氪是一家以智能化、数字化、数据驱动的智能出行科技公司,秉承用户型企业理念,聚焦智能…

DNS指向别名还是IP

现在有一台服务器dbprod126,ip是172.22.100.4 现在有一个需求,需要在dns中对dbprod126建一个别名wondadb3r的记录,也就是ping wondadb3r的时候显示的是dbprod126的ip,目前有两​种方法,主要使用方法1指向别名&#xf…

matplotlib基础--2

5 图例 matplotlib中的图例是帮助观察者理解图像数据的重要工具。图列通常包含在图像中,用于解释不同的颜色、形状、标签和其它元素。 1)主要参数 当不设置图例的参数时,默认的图例是这样的。 x np.linspace(0,1,50) y1 np.sin(x*2*np.p…

【unity插件】使用BehaviorDesigner插件制作BOSS的AI行为树

文章目录 前言素材插件一、基础使用二、敌人物理攻击三、敌人面向玩家四、敌人法术攻击五、随机进行攻击六、敌人不同的阶段推荐学习视频源码完结 前言 Behavior Designer是一个行为树插件,是一款为了让策划,程序员,美术人员方便使用的可视化…

基于SSM技客户管理系统源码和论文

基于SSM技客户管理系统源码和论文079 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 一、课题的背景和意义 1、课题目的 客户管理是每个企业中最重要的模块,对客户的分类管理有利于更有效地了解从…

RHCE——九、SELinux

SELinux 一、概念1、作用2、SELinux与传统的权限区别 二、SELinux工作原理1、名词解释主体(Subject)目标(Object)策略(Policy)安全上下文(Security Context) 2、文件安全上下文查看1…

java入门第三节

java入门第三节 一.什么是oop 1.pop与oop (1).面向过程编程:(POP:Procedure Oriented Programming) 1.步骤清晰简单,第一步做什么,第二步做什么,按照顺序; 2.代码线性&#xff0…

什么是 TEE

参考文献: Sabt M, Achemlal M, Bouabdallah A. Trusted execution environment: what it is, and what it is not[C]//2015 IEEE Trustcom/BigDataSE/Ispa. IEEE, 2015, 1: 57-64. “U.S. government protection profifile for separation kernels in environment…

svn软连接和文件忽略

软连接 1)TortoiseSVN->Properties->New->Externals->New 2)填入软连接信息 Local path: 写下软连接后的文件夹的名字 URL: 想要软连接的牡蛎->TortoiseSVN->Repo-browser 复制下填入 文件忽略 以空格隔开就行

CentOS 7 Nacos 设置开机自动重启

一、说明 Nacos如果是手动启动的话,在服务器宕机或者重启后,没有自动运行,影响很多业务系统,需要每次手动执行命令 startup.sh -m standalone,才能启动 Nacos 服务,不能像docker服务一样,使用 …

「Vue|网页开发|前端开发」01 快速入门:快速写一个Vue的HelloWorld项目

本文主要介绍如何用vue开发的标准化工具vue-cli快速搭建一个符合实际业务项目结构的hello world网页项目并理解vue的代码文件结构以及页面渲染流程。 文章目录 一、准备工作:安装node.js二、项目搭建创建项目目录全局安装vue-cli使用Webpack初始化项目启动项目学会…

Prometheus关于微服务的监控

在微服务架构下随着服务越来越多,定位问题也变得越来越复杂,因此监控服务的运行状态以及针对异常状态及时的发出告警也成为微服务治理不可或缺的一环。服务的监控主要有日志监控、调用链路监控、指标监控等几种类型方式,其中指标监控在整个微服务监控中比重最高,也是实际生…

支持库和应用条

每个Android新版本都会引入一些新特性,不过并不是每个人都能做到Android一推出新版本就升级到那个最新版本,实际上,大多数人都至少落后一个版本。而支持库允许在老版本的Android上使用新特性。 Andriod支持库提供了对Android老版本的向后兼容…

模块化与组件化:开发中的双剑合璧

引言:模块化与组件化的重要性 在现代软件开发中,随着项目规模的增长和技术的复杂性增加,如何有效地组织和管理代码变得越来越重要。模块化与组件化作为两种主要的代码组织方法,为开发者提供了有效的工具,帮助他们创建…

小白带你学习linux的LNMT和动静分离(三十九)

目录 一、LNMT 1、部署tomcat 2、部署nginx 3、部署Mariadb 4、配置Nginx 二、Nginx高级配置 1、location 2、rewirte 三、动静分离 1、修改nginx配置文件 2、重启服务!!! 一、LNMT L是linux,N是nginx ,M是…

8.28作业

定义一个基类 Animal&#xff0c;其中有一个虚函数 perform()&#xff0c;用于在子类中实现不同的表演行为。 #include <iostream>using namespace std; class Animal { public:Animal() {}virtual void perform(){} }; class Monkey:public Animal { public:Monkey() {…