Python笔记6----数组
1、Python 中的数组
形式:
- 用list和tuple等数据结构表示数组
一维数组:list=[1,2,3,4]
二维数组:list=[[1,2,3],[4,5,6],[7,8,9]]
- 用array模块:array模块需要加载,而且运用的较少
通过array函数创建数组(数组中的元素可以不是同一种类型),array.array('B',range(5)) >>array('B',[1,2,3,4,5])
提供append、insert和read等函数
标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。
此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和C语言的一维数组比较类似。但是由于它不支持多维,也没有各种运算函数,因此也不适合做数值运算。
NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray(数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。
(来自链接http://old.sebug.net/paper/books/scipydoc/numpy_intro.html)
2、ndarray
ndarray是Numpy中的基本数据结构,所有元素是同一种类型,优点:节省内存和提高CPU计算时间,有丰富的函数。
0:作用对象是index; 1:作用对象是columns。
(1)数组的创建:
import numpy as np
①array函数创建:x=np.array([(1,2,3),(4,5,6)])
创建一维数组:np.array([元素1,元素2,……])
创建二维数组:np.array ( [ [ 元素1,元素2……] , [ 元素1,元素2,…… ] ,[ ] , [ ] ] )
②arange: x=np.arange(1,5,0.5) >>array([1.,1.5,2.,2.5,3.,3.5,4.,4.5])
③random: x=np.random.random((2,2)) >>array([[0.7999243,0.3454323].[0.3546543,0.4634535]])
④linspace: x=np.linspace(1,2,5,endpoint=False) >>array([1.,1.2,1.4,1.6,1.8])
⑤ones: x=np.ones([2,3]) >>array([[1.,1.,1.],[1.,1.,1.]])
⑥zeros: x=np.zeros((2,2)) >>array([[0.,0.],[0.,0.]])
⑦fromfunction: x=np.fromfunction(lamda i,j:(i+1)*(j+1),(9,9))
结果为9*9乘法表。array([[1,2,3,4,5,6,7,8,9],
[2,4,6,8,10,12,14,16,18],
[3,6,9……]
……
[9,18,……,81]])
(2)数组的操作:
①array[1] :选择第二行所有元素
array[0:2]:选择从第一行到第二行的所有元素(索引2不包括,即第三行)
array[:,[0,1]]:选择所有行的第一列和第二列的元素
array[1,[0,1]]:选择第二行第1列和第2列的元素
②shape:数组的维数,shape[0]取行数,shape[1]取列数。
③size:元素总个数
④reshape():改变数组的大小。但是原数组不变,即aArray不变,变化结果在bArray
aArray=np.array([[1,2,3],[4,5,6]]) bArray=aArray.reshape(1,6)
>> aArray=array([[1,2,3],[4,5,6]])
>> bArray=array([[1,2,3,4,5,6]])
⑤resize():改变数组的大小。原数组改变了,即aArray变了
aArray.resize(1,6)
>> aArray= array([[1,2,3,4,5,6]])
⑥vstack():垂直方向拼接。
cArray=np.array([[7,8,9]])
np.vstack((aArray,cArray))
>>array([[1,2,3],
[4,5,6],
[7,8,9]])
⑦hstack():水平方向拼接。
np.hstack((aArray,cArray))
>> array([[1,2,3,4,5,6,7,8,9]])
⑧+:(两个大小不同的数组相加,是一种广播的思想)
aArray+cArray >>array([[8,10,12],[11,13,15]])
⑨sort(): 排序 ,一维数组x排序,x.sort()
二维数组y=([[3,1,2],[6,3,1]])排序是对每一行进行排序,y.sort(),结果为y=([[1,2,3],[1,3,6]])
统计运算:
①sum():所有元素的求和,aArray.sum()
②sum(axis=0):列求和
③min():所有元素最小值,aArray.min()
④argmax():返回最大值的索引
⑤mean():所有元素的均值
⑥var():方差
⑦std():标准差
线性代数:np.linalg模块中的函数
①np.linalg.det(x):行列式
②np.linalg.inv(x):逆矩阵
③np.dot(x,x):x的内积
④np.linalg.solve():多元一次方程组求根
⑤np.linalg.eig():求特征值和特征向量
ufunc函数:
同样的计算numpy的通用计算比math计算的要快。
a = np.array([[[1, 2], [1]],[[2, 3, 3], [3, 4]]]) print(a.shape) count_fun = np.vectorize(lambda x: len(x)) print(count_fun(a))
转载于:https://www.cnblogs.com/Lee-yl/p/8625402.html
Python笔记6----数组相关推荐
- python笔记:数组的一些操作
目录 1.对数组求指数和对数 2.数组的最值及其索引 3.按照行或者列求均值/求和/最大值/最小值/标准差/方差 4.取对角线元素 5.取两个数组对应的最大或最小值 6.对数组重新排列 1.对数组求指 ...
- Python学习笔记——Numpy数组的移动滑窗,使用as_strided实现
Python学习笔记--Numpy数组的移动滑窗,使用as_strided实现 `Numpy`中移动滑窗的实现 为何需要移动滑窗 `Numpy`中的移动滑窗 移动滑窗的`as_strided`实现方法 ...
- python键盘输入数组_python 二维数组切割Python读取键盘输入的2种方法
Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...
- 初学者python笔记(列表的食用方法)
本篇是关于可迭代对象中的列表一些相关使用方法的记录. 可迭代对象简单描述:可以被for循环执行的对象(字符串,列表,元组,字典-) input()方法接收的其实只是字符串 a = input(&quo ...
- C# 笔记2 - 数组、集合与与文本文件处理
C# 笔记2 - 数组.集合.文本文件处理 正在做笔记中- 任何软件编程语言都会涉及到这些基本内容--栈.队列.列表.数组.散列表等等,没有它们几乎无法完成任何工作.只是不同语言对某些数据结构由不同的 ...
- Python笔记相关
Python 2021.9.9 Turtle官方文档 货币兑换 money=input("请输入货币符号($/¥)和金额:") while 1+1==2:if money[0] i ...
- python笔记: numpy matrix 随机抽取几行或几列
python笔记: numpy matrix 随机抽取几行或几列 随机取几行 随机取几列 tips 1.生成array 2.array的大小 3.打乱array的2种类似方法, 矩阵为多行时默认打乱行 ...
- Python笔记(一)
Python笔记(一) 从HelloWorld开始学习吧 HelloWorld.py Python中的注释 Python中变量名起名规范 Python中的输出以及格式化 Python中的数据类型 Nu ...
- Python笔记(1-20)
Python笔记(1-20) 习题等资源来源于网络,本人只是在此收集整理,如有版权问题,归小甲鱼所属.小甲鱼:https://ilovefishc.com/ 第 1 课 1.Python 是什么类型的 ...
- python笔记4:数据归一化(0,1),归至(-1,1)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 python笔记4:数据归一化(0,1),归至(-1,1) 一.pytorch里tensor数据归一化 1.tensor数组全局归一化 ...
最新文章
- opencv3异常 库找不到 no such file
- linux系统/var目录的作用
- 时间序列的预处理之纯随机性检验
- 烦人的幻灯片(信息学奥赛一本通-T1395)
- 推翻相对论的专家,就差安排明天几点日出了
- 鬼泣最稳定的服务器,DNF95级版本国服环境下,鬼泣和红神谁更强?深度对比客观分析!...
- 浅谈Zookeeper客户端库Curator实现加锁的原理
- python循环结构高一信息技术_高中信息技术《循环结构1》优质课教学设计、教案...
- 基于FPGA的三人表决器设计
- 通用css样式模板,
- 腾讯互娱开源分布式开发框架Pebble
- 在VS中怎么用vb画矩形_怎样画颜色绚丽的插画?
- java旋转的行星,为什么行星会旋转,你真的知道吗?
- docker常用的命令笔记
- flex:1 的含义 以及属性值1的含义
- python爱好者社区公众号历史文章合集_精心整理 |人工智能爱好者社区历史文章合集(作者篇)...
- 【小睿精选·第八期】为NBA球员提供预警新冠肺炎的智能戒指Oura Ring
- 三种实现分布式锁的方式
- 视频消重参数 抖音短视频md5修改在线
- JIRA Servcie Desk详细安装教程
热门文章
- 常见HTTP状态码汇总
- 高中学历能学python_给想学,入坑Python的人一些建议
- 0x00611F29 处有未经处理的异常(在 suanfaxunlian.exe 中): 0xC00000FD: Stack overflow (参数: 0x00000000, 0x00622000)
- 选择什么时间周期做交易合适?
- MySQL知识汇总:MySQL函数CASE WHEN用法详解
- 锐捷EG系列路由器WEB界面ipsec设置说明
- 使用tcgames电脑玩手机游戏助手玩手游常见问题第二期
- Python奥特曼打怪兽射击游戏(基于海龟画图创作的作品,来自Python创意编程100例sprites篇_Python精灵模块)
- 5G+高精度定位应用测试报告
- 快手引流怎么变现?只要你会玩,快手依然是一个致富流量池