Numpy数组和列表list的区别

参考:Numpy Array vs List

在Python编程中,列表(list)和Numpy数组(numpy array)是两种常见的数据结构,它们都可以用来存储多个元素。但是它们在实际使用中有很大的区别,本文将详细比较Numpy数组和列表list的特点,以帮助读者了解何时应该选择哪种数据结构。

更多技术文章,全网首发公众号 “极客钛” 锁定 -上午11点 - ,感谢大家关注、转发、点赞!

创建方式

首先,让我们来看看如何创建列表和Numpy数组。

创建列表

my_list = [1, 2, 3, 4, 5]
print(my_list)

执行代码结果:
在这里插入图片描述

创建numpy数组

import numpy as np

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

执行代码结果:

在这里插入图片描述

运行以上代码,我们可以看到列表和Numpy数组的创建方式。列表使用方括号[],而Numpy数组需要引入numpy库并使用np.array()函数。

类型和性能

列表和Numpy数组的一个重要区别在于它们的类型和性能。Numpy数组是由C语言编写,所以在执行数学运算时非常高效。而列表是Python的内置数据类型,性能通常较Numpy数组差。

让我们来进行一个性能对比测试,计算100万个元素的平方和。

使用列表

import time

my_list = list(range(1000000))

start_time = time.time()
sum_of_squares = sum([x**2 for x in my_list])
end_time = time.time()

print("使用list计算平方和:", sum_of_squares)
print("使用list时间:", end_time - start_time, "seconds")

代码执行结果:

在这里插入图片描述

使用numpy数组

my_array = np.array(range(1000000))

start_time = time.time()
sum_of_squares = np.sum(my_array**2)
end_time = time.time()

print("使用Numpy计算平方和:", sum_of_squares)
print("使用Numpy时间:", end_time - start_time, "seconds")

代码执行结果:

在这里插入图片描述

通过运行以上代码,我们可以看到Numpy数组在执行数学运算时的性能明显优于列表。

索引和切片

在访问和操作元素时,Numpy数组和列表也有一些区别。

索引和切片列表

my_list = [1, 2, 3, 4, 5]
print(my_list[0])  # 输出第一个元素
print(my_list[-1])  # 输出最后一个元素
print(my_list[1:3])  # 输出第二个到第三个元素

代码执行结果:

在这里插入图片描述

索引和切片Numpy数组

my_array = np.array([1, 2, 3, 4, 5])
print(my_array[0])  # 输出第一个元素
print(my_array[-1])  # 输出最后一个元素
print(my_array[1:3])  # 输出第二个到第三个元素

代码执行结果:
在这里插入图片描述

Numpy数组和列表的索引和切片方式基本相同,但Numpy数组支持更多高级的索引方式,如布尔索引和花式索引。

广播操作

Numpy数组支持广播操作,可以对不同维度的数组进行数学运算,而列表则不支持。

array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([1, 2])

result = array1 + array2
print(result)

代码执行结果:

在这里插入图片描述

在上面的例子中,我们对一个二维数组和一个一维数组进行了相加操作,Numpy数组会自动对一维数组进行广播操作,实现了元素对应相加的功能。

总结

总的来说,Numpy数组在处理数学运算和大数据集时更高效,而列表更适合一般的数据存储和操作。在选择数据结构时,可以根据具体需求来决定使用列表还是Numpy数组。

更多技术文章,全网首发公众号 “极客钛” 锁定 -上午11点 - ,感谢大家关注、转发、点赞!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

爬虫 | 垃圾处理设施数据的获取与保存

Hi,大家好,我是半亩花海。本项目通过发送网络请求(requests),从指定的 URL 获取垃圾处理设施的相关数据,并将数据保存到 CSV 文件中,以供后续分析和利用。 目录 一、项目结构 二、详细说明 三…

【详解算法流程+程序】DBSCAN基于密度的聚类算法+源码-用K-means和DBSCAN算法对银行数据进行聚类并完成用户画像数据分析课设源码资料包

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法。 与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇, 并可在噪声的空间数据…

数据结构与算法——22.哈希算法

这篇文章我们来讲一下哈希表中较为关键的部分——哈希算法 目录 1.哈希算法的介绍 2.hash算法的使用 2.1 Object.hashCode 2.2 String.hashCode 3.关于哈希表及哈希算法的一些思考 1.哈希算法的介绍 问题:什么是哈希算法?哈希算法有哪些&#xff…

【Linux 驱动基础】设备树中断

# 前置知识 interrupts 文档 Specifying interrupt information for devices 1) Interrupt client nodes -------------------------Nodes that describe devices which generate interrupts must contain an "interrupts" property, an "interrupts-extende…

腾讯EdgeOne产品测评体验——开启安全防护,保障数据无忧

当今时代数字化经济蓬勃发展人们的生活逐渐便利,类似线上购物、线上娱乐、线上会议等数字化的服务如雨后春笋般在全国遍地生长,在人们享受这些服务的同时也面临着各式各样的挑战,如网络数据会不稳定、个人隐私容易暴露、资产信息会被攻击等。…

【MySQL | 第六篇】数据库三大范式

文章目录 6.数据库设计三大范式6.1第一范式6.2第二范式6.3第三范式6.4反范式设计 6.数据库设计三大范式 6.1第一范式 第一范式(1NF):确保每列的原子性(强调的是列的原子性,即列不能够再分成其他几列)。实际上,第一范式…

C++_第五周做题总结_构造与析构

id:31 A.Point(类与构造) 题目描述 下面是一个平面上的点的类定义,请在类外实现它的所有方法,并生成点测试它。 class Point {double x, y; public:Point(); // 缺省构造函数,给x,y分别赋值为0Point(double x_value…

顶顶通呼叫中心中间件-SIP分机安全(mod_cti基于FreeSWITCH)

介绍 运行在公网的FreeSWITCH服务器,每天都会接收到很多恶意的呼叫请求和注册请求,尝试盗打电话。合理的配置可以防止电话给倒打,但是每天大量的攻击,会让FS产生很多日志,降低FreeSWITCH的处理能力,cti模块…

【Entity Framework】你要知道EF中功能序列与值转换

【Entity Framework】你要知道EF中功能序列与值转换 文章目录 【Entity Framework】你要知道EF中功能序列与值转换一、序列1.1 基本用法1.2 配置序列设置 二、值转换2.1 配置值转换器2.2 批量配置值转换器2.3 预定义的转换2.4 ValueConverter类2.5 内置转换器 三、应用3.1 简单…

C语言面试题之奇偶链表

奇偶链表 实例要求 1、给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表;2、第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推&#x…

【Linux】Linux基础与常用指令大全

文章目录 操作系统是什么?1. Linux家族介绍2. Linux的安装方式3. 常用指令3.1 ls [选项] [目录/文件](显示目录或文件信息)3.2 pwd(显示当前所在目录)3.3 任意指令加上 --help(查看指令的用法)3…

半导体材料(一)

本篇为西安交通大学本科课程《电气材料基础》的笔记。 本篇为这一单元的第一篇笔记,下一篇传送门。 半导体是导电能力介于均属导体和绝缘体之间的固体材料。 半导体基本特征 室温下其电阻数量级约为 1 0 − 6 ∼ 1 0 8 Ω ⋅ m 10^{-6}\sim10^{8}\mathrm{\Omega…

玩steam游戏提示缺少dll文件怎么办,总结5种解决方法

在尝试运行您所期待已久的Steam平台上的某款精彩游戏时,您可能遭遇了一个令人颇为困扰的问题:系统提示“Steam游戏缺少dll文件,游戏无法启动”。为了解决这个问题,我总结了以下五种解决方法,希望能帮助到遇到类似问题的…

用three.js做一个3D汉诺塔游戏(下)

本文由孟智强同学原创。 接上期:《用three.js做一个3D汉诺塔游戏(上)》 在上一期,我们成功地搭建了基础的 3D 场景。在本期中,我们将对场景进行优化,使其在视觉上更加真实,并为场景中的物体添加…

【数据结构】【C++】AVL树的模拟实现(插入、判断、旋转)

文章目录 1 概念2 实现2.1 AVL树结点的定义2.2 AVL树的插入2.2.1 AVL树的插入规则2.2.2 旋转2.2.2.1 左单旋2.2.2.2 右单旋2.2.2.3 左右双旋2.2.2.4 右左双旋 2.2.3 总结 3 平衡判断4 删除5 源码 1 概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二…

论文速读:Do Generated Data Always Help Contrastive Learning?

在对比学习领域,最近很多研究利用高质量生成模型来提升对比学习 给定一个未标记的数据集,在其上训练一个生成模型来生成大量的合成样本,然后在真实数据和生成数据的组合上执行对比学习这种使用生成数据的最简单方式被称为“数据膨胀”这与数据…

案例三 BeautifulSoup之链家二手房

本案例用到列表,函数,字符串等知识点,知识点参考链接如下: python基础知识(一)&输入输出函数 python基础知识(二)&基本命令 python基础知识(三)&…

如何在Linux通过docker搭建Plik文件系统并实现无公网IP管理内网文件

文章目录 1. Docker部署Plik2. 本地访问Plik3. Linux安装Cpolar4. 配置Plik公网地址5. 远程访问Plik6. 固定Plik公网地址7. 固定地址访问Plik 本文介绍如何使用Linux docker方式快速安装Plik并且结合Cpolar内网穿透工具实现远程访问,实现随时随地在任意设备上传或者…

盒子模型+响应式布局 + 原型链与继承

盒子模型 是什么 css布局基础,规定了元素在页面上如何呈现,以及元素之间的空间关系 由content paddingbordermargin四部分组成 为什么 盒子模型分为 标准盒子模型: 元素的宽度与高度 只包括content IE盒子模型: 元素的宽度与高度 包括content,padding,border 在实际操作中…

Python实现时间序列ARIMA模型(附带超详细理论知识和完整代码实现)

文章目录 0 结果1 介绍2 建模2.1 预备知识2.1.1 ADF检验结果(单位根检验统计量)2.1.2 差分序列的白噪声检验(这里使用Ljung-Box检验)2.1.3 ARIMA模型(差分整合移动平均自回归模型)的三个参数:p,…