python数组操作

百度PaddlePaddle入门-5

夙愿已清 提交于 2020-02-06 18:38:11
Numpy是 Numerical Python 的简称,是Python中高性能科学计算和数据分析的基础包。Numpy提供了一个多维数组类型ndarray,它具有矢量算术运算和复杂广播的能力,可以实现快速的计算并且能节省存储空间。在使用Python调用飞桨API完成深度学习任务的过程中, 通常会使用Numpy实现数据预处理和一些模型指标的计算 ,飞桨中的Tensor数据可以很方便的和ndarray数组进行相互转换。 在这一节将介绍以下内容: 基础数据结构ndarray数组 随机数numpy.random 线性代数numpy.linalg Numpy保存和导入文件 应用举例 基础数据结构ndarray数组 ndarray数组是Numpy中的基础数据结构式,这一小节将从以下几个方面展开进行介绍: 为什么引入ndarray数组 如何创建ndarray数组 ndarray数组的基本运算 ndarray数组的切片和索引 ndarray数组的统计运算 为什么引入ndarray数组 在Python中使用list列表可以非常灵活的处理多个元素的操作,但是其效率却比较低。ndarray数组相比于Python中的list列表具有以下特点: ndarray数组中所有元素的数据类型是相同的,数据地址是连续的,批量操作数组元素时速度更快;list列表中元素的数据类型可以不同,需要通过寻址方式找到下一个元素

算法浅谈——分治算法与归并、快速排序(附代码和动图演示)

我怕爱的太早我们不能终老 提交于 2020-02-06 09:50:39
在之前的文章当中,我们通过海盗分金币问题详细讲解了递归方法。 我们可以认为在递归的过程当中,我们通过函数自己调用自己,将大问题转化成了小问题,因此简化了编码以及建模。今天这篇文章呢,就正式和大家聊一聊将大问题简化成小问题的分治算法的经典使用场景——排序。 排序算法 排序算法有很多,很多博文都有总结,号称有十大经典的排序算法。我们信手拈来就可以说上来很多,比如插入排序、选择排序、桶排序、希尔排序、快速排序、归并排序等等。老实讲这么多排序算法,但我们实际工作中并不会用到那么多,凡是高级语言都有自带的排序工具,我们直接调用就好。为了应付面试以及提升自己算法能力呢,用到的也就那么几种。今天我们来介绍一下利用分治思想实现的两种经典排序算法——归并排序与快速排序。 归并排序 我们先来讲归并排序,归并排序的思路其实很简单,说白了只有一句话:两个有序数组归并的复杂度是 \(O(n)\) 。 我们举个例子: a = [1, 4, 6] b = [2, 4, 5] c = [] 我们用i和j分别表示a和b两个数组的下标,c表示归并之后的数组,显然一开始的时候i, j = 0, 0。我们不停地比较a和b数组i和j位置大小关系,将小的那个数填入c。 填入一个数之后: i = 1 j = 0 a = [1, 4, 6] b = [2, 4, 5] c = [1] 填入两个数之后: i = 1 j = 1 a

pandas(1)

五迷三道 提交于 2020-02-06 05:24:43
文章目录 安装并使用Pandas Pandas对象简介 Pandas的Series对象 Series是广义的Numpy数组 Series是特殊的字典 创建Series对象 Pandas的DataFrame对象 DataFrame是广义的Numpy数组 DataFrame是特殊的字典 创建DataFrame对象 Pandas的Index对象 将Index看作不可变数组 将Index看作有序集合 《Python数据科学手册》读书笔记 安装并使用Pandas import numpy as np # 检查pandas的版本号 import pandas as pd pd . __version__ '0.23.4' pd? Pandas对象简介 如果从底层视角观察Pandas,可以把它们看成增强版的Numpy结构化数组,行列都不再是简单的整数索引,还可以带上标签。 先来看看Pandas三个基本的数据结构: Series DataFrame Index Pandas的Series对象 Pandas的Series对象是一个带索引数据构成的一维数组,可以用一个数组创建Series对象 data = pd . Series ( [ 0.25 , 0.5 , 0.75 , 1.0 ] ) data 0 0.25 1 0.50 2 0.75 3 1.00 dtype: float64

Numpy -- Python--学习

夙愿已清 提交于 2020-02-05 13:15:45
1.多维数组对象 Numpy ndarray Numpy 的核心特征之一是N-维数组对象——ndarray。ndarray是Python中的一个快速、灵活的大型数据集容器。还可以进行常见的标量运算。 首先我们引入一个例子,导入一个Numpy,生成四行五列的数组。 # numpy ndarray -- 多维数组对象 import numpy as np # 生成随机数组 data = np.random.randn(4, 5) print(data) 下面进行一些标量数学操作。 # data * 10 print(data * 10) # data + data print(data + data) 第一个数学操作中所以的元素都乘以10,第二个数学操作中,对应元素相加。 一个ndarray是一个通用的多维同类数据容器,也就是说,它包含的每一个元素均为相同类型,所以我们可以查看数据的维度和属性,例如: # data.shape print(data.shape) # data.dtype print(data.dtype) 2.构造 ndarray 构造数组的方式有很多,这里介绍numpy的array函数。 array:接受任意的序列型对象,生成一个新的numpy数组。 data = [1, 2, 3, 4, 5, 6] array1 = np.array(data) print

Observable详解

╄→尐↘猪︶ㄣ 提交于 2020-02-05 09:09:03
Observable详解 rxjs angular2 在介绍 Observable 之前,我们要先了解两个设计模式: Observer Pattern - (观察者模式) Iterator Pattern - (迭代器模式) 这两个模式是 Observable 的基础,下面我们先来介绍一下 Observer Pattern。 Observer Pattern 观察者模式定义 观察者模式 是 软件设计模式 的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实时事件处理系统。 — 维基百科 观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。 我们可以使用日常生活中,期刊订阅的例子来形象地解释一下上面的概念。期刊订阅包含两个主要的角色:期刊出版方和订阅者,他们之间的关系如下: 期刊出版方 - 负责期刊的出版和发行工作 订阅者 - 只需执行订阅操作,新版的期刊发布后,就会主动收到通知,如果取消订阅,以后就不会再收到通知 在观察者模式中也有两个主要角色:Subject (主题) 和 Observer (观察者)

PHP 数据类型

对着背影说爱祢 提交于 2020-02-03 00:35:20
PHP 数据类型 四种标题类型 boolean(布尔型) integer(整型) float(浮点型,也称作 double) string(字符串) 三种复合类型 array(数组) object(对象) callable(可调用) 两种特殊类型 resource(资源) NULL(无类型) 伪类型 mixed(混合类型) number(数字类型) callback(回调类型,又称为 callable) array|object(数组 | 对象类型) void (无类型) 获取变量的类型 gettype — 获取变量的类型 string gettype ( mixed $var ) 检测变量的类型 is_array — 检测变量是否是数组 is_bool — 检测变量是否是布尔型 is_callable — 检测参数是否为合法的可调用结构 is_double — is_float 的别名 is_float — 检测变量是否是浮点型 is_int — 检测变量是否是整数 is_integer — is_int 的别名 is_iterable — Verify that the contents of a variable is an iterable value is_long — is_int 的别名 is_null — 检测变量是否为 NULL is_numeric —

赚到!4个Python初学者必学的Numpy小技巧

坚强是说给别人听的谎言 提交于 2020-02-02 13:24:32
2020-01-22 17:01:00 全文共 3384 字,预计学习时长 10 分钟 图源:Unsplash Python初学者除了要掌握基础知识外,了解一些小技巧、小窍门也是学习路上必不可少的一种催化剂,能帮助你更好的学习。 Numpy作为Python最受欢迎的库之一,鉴于其优势,几乎每个Python程序员都将其用于算术运算。Numpy数组比Python列表更紧凑。该库还方便地以非常高效的计算方式实现了许多常见的矩阵运算。 下面小芯就基于实践整理出了Python初学者应该学习的4个numpy技巧,它们能够帮助你编写更简洁易读的代码。 在学习numpy技巧之前,请确保已熟悉以下文章中的一些Python内置功能。 1. 掩码数组——选择 数据集是不完善的,它们总是包含缺失或无效记录的数组,而这些记录是时常需要忽略的。例如,由于传感器故障,气象站的测量值可能包含缺失值。 Numpy有一个子模块numpy.ma,它支持带掩码的数据数组。带掩码的数组包含一个普通的numpy数组和一个指示无效记录位置的掩码。 np.ma.MaskedArray(data=arr,mask=invalid_mask) 有时使用负值或字符串标记数组中的无效记录。如果知道被掩盖的值,例如-999,也可以使用np.ma.masked_values(arr,value = -999)创建一个掩码数组

前端之JavaScript

僤鯓⒐⒋嵵緔 提交于 2020-02-02 02:03:28
1 | 0 JavaScript概述 1 | 1 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。 该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。而是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。 因此ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。 1 | 2 ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009 ECMAScript 5 添加"strict mode"严格模式 添加JSON支持 2011 ECMAScript 5.1 版本变更

【Python数据结构与算法笔记day31】6.6. 归并排序

房东的猫 提交于 2020-02-01 20:19:31
文章目录 6.6. 归并排序 归并排序 归并排序的分析 时间复杂度 6.6. 归并排序 归并排序 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。 归并排序的分析 def merge_sort ( alist ) : if len ( alist ) <= 1 : return alist # 二分分解 num = len ( alist ) / 2 left = merge_sort ( alist [ : num ] ) right = merge_sort ( alist [ num : ] ) # 合并 return merge ( left , right ) def merge ( left , right ) : '''合并操作,将两个有序数组left[]和right[]合并成一个大的有序数组''' #left与right的下标指针 l , r = 0 , 0 result = [ ] while l < len ( left ) and r < len ( right ) : if left [ l ] < right [ r ] :

Numpy学习笔记(三)

大兔子大兔子 提交于 2020-02-01 19:21:12
Numpy的基本操作 前面我们已经知道了新建Numpy数组和定义数组元素的方法。现在来学习数组的各种运算方法 算术运算符 数组的第一类运算是使用算术运算符进行的运算。最显而易见的是为数组加上或乘以一个标量 >> > a = np . arange ( 4 ) >> > a array ( [ 0 , 1 , 2 , 3 ] ) >> > a + 4 array ( [ 4 , 5 , 6 , 7 ] ) >> > a * 2 array ( [ 0 , 2 , 4 , 6 ] ) >> > 这些运算符还可以用于两个数组的运算,在numpy中,这些运算符为 元素级 ,也就是说,它们只用于位置相同的元素之间,所得到的运算结果组成一个新的数组,运算结果在新数组中的位置跟操作数位置相同 >> > a array ( [ 0 , 1 , 2 , 3 ] ) >> > b = np . arange ( 4 , 8 ) >> > b array ( [ 4 , 5 , 6 , 7 ] ) >> > a + b array ( [ 4 , 6 , 8 , 10 ] ) >> > a - b array ( [ - 4 , - 4 , - 4 , - 4 ] ) >> > a * b array ( [ 0 , 5 , 12 , 21 ] ) >> > 此外