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计算的要快。

Vectorize函数:对numpy数组中的每一个元素应用一个函数。
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----数组相关推荐

  1. python笔记:数组的一些操作

    目录 1.对数组求指数和对数 2.数组的最值及其索引 3.按照行或者列求均值/求和/最大值/最小值/标准差/方差 4.取对角线元素 5.取两个数组对应的最大或最小值 6.对数组重新排列 1.对数组求指 ...

  2. Python学习笔记——Numpy数组的移动滑窗,使用as_strided实现

    Python学习笔记--Numpy数组的移动滑窗,使用as_strided实现 `Numpy`中移动滑窗的实现 为何需要移动滑窗 `Numpy`中的移动滑窗 移动滑窗的`as_strided`实现方法 ...

  3. python键盘输入数组_python 二维数组切割Python读取键盘输入的2种方法

    Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...

  4. 初学者python笔记(列表的食用方法)

    本篇是关于可迭代对象中的列表一些相关使用方法的记录. 可迭代对象简单描述:可以被for循环执行的对象(字符串,列表,元组,字典-) input()方法接收的其实只是字符串 a = input(&quo ...

  5. C# 笔记2 - 数组、集合与与文本文件处理

    C# 笔记2 - 数组.集合.文本文件处理 正在做笔记中- 任何软件编程语言都会涉及到这些基本内容--栈.队列.列表.数组.散列表等等,没有它们几乎无法完成任何工作.只是不同语言对某些数据结构由不同的 ...

  6. Python笔记相关

    Python 2021.9.9 Turtle官方文档 货币兑换 money=input("请输入货币符号($/¥)和金额:") while 1+1==2:if money[0] i ...

  7. python笔记: numpy matrix 随机抽取几行或几列

    python笔记: numpy matrix 随机抽取几行或几列 随机取几行 随机取几列 tips 1.生成array 2.array的大小 3.打乱array的2种类似方法, 矩阵为多行时默认打乱行 ...

  8. Python笔记(一)

    Python笔记(一) 从HelloWorld开始学习吧 HelloWorld.py Python中的注释 Python中变量名起名规范 Python中的输出以及格式化 Python中的数据类型 Nu ...

  9. Python笔记(1-20)

    Python笔记(1-20) 习题等资源来源于网络,本人只是在此收集整理,如有版权问题,归小甲鱼所属.小甲鱼:https://ilovefishc.com/ 第 1 课 1.Python 是什么类型的 ...

  10. python笔记4:数据归一化(0,1),归至(-1,1)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 python笔记4:数据归一化(0,1),归至(-1,1) 一.pytorch里tensor数据归一化 1.tensor数组全局归一化 ...

最新文章

  1. opencv3异常 库找不到 no such file
  2. linux系统/var目录的作用
  3. 时间序列的预处理之纯随机性检验
  4. 烦人的幻灯片(信息学奥赛一本通-T1395)
  5. 推翻相对论的专家,就差安排明天几点日出了
  6. 鬼泣最稳定的服务器,DNF95级版本国服环境下,鬼泣和红神谁更强?深度对比客观分析!...
  7. 浅谈Zookeeper客户端库Curator实现加锁的原理
  8. python循环结构高一信息技术_高中信息技术《循环结构1》优质课教学设计、教案...
  9. 基于FPGA的三人表决器设计
  10. 通用css样式模板,
  11. 腾讯互娱开源分布式开发框架Pebble
  12. 在VS中怎么用vb画矩形_怎样画颜色绚丽的插画?
  13. java旋转的行星,为什么行星会旋转,你真的知道吗?
  14. docker常用的命令笔记
  15. flex:1 的含义 以及属性值1的含义
  16. python爱好者社区公众号历史文章合集_精心整理 |人工智能爱好者社区历史文章合集(作者篇)...
  17. 【小睿精选·第八期】为NBA球员提供预警新冠肺炎的智能戒指Oura Ring
  18. 三种实现分布式锁的方式
  19. 视频消重参数 抖音短视频md5修改在线
  20. JIRA Servcie Desk详细安装教程

热门文章

  1. 常见HTTP状态码汇总
  2. 高中学历能学python_给想学,入坑Python的人一些建议
  3. 0x00611F29 处有未经处理的异常(在 suanfaxunlian.exe 中): 0xC00000FD: Stack overflow (参数: 0x00000000, 0x00622000)
  4. 选择什么时间周期做交易合适?
  5. MySQL知识汇总:MySQL函数CASE WHEN用法详解
  6. 锐捷EG系列路由器WEB界面ipsec设置说明
  7. 使用tcgames电脑玩手机游戏助手玩手游常见问题第二期
  8. Python奥特曼打怪兽射击游戏(基于海龟画图创作的作品,来自Python创意编程100例sprites篇_Python精灵模块)
  9. 5G+高精度定位应用测试报告
  10. 快手引流怎么变现?只要你会玩,快手依然是一个致富流量池