python数组操作

七种经典排序算法python实现

匿名 (未验证) 提交于 2019-12-02 22:51:30
最近要考算法设计,所以把排序算法总结一下。经典的排序算法包括:冒泡排序,选择排序,插入排序,快速排序,归并排序,堆排序和希尔排序。全部程序都用python3实现,默认从小到大排序。 参考文章:https://blog.csdn.net/ls5718/article/details/51809866,博主的文章里面有演示动图,不懂的时候可以看下动图。 介绍: 让两数比较大的值一直滚动到最右侧,类似泡泡一直往上飘,每次滚动都要进行比较 思路: 临近的数字两两进行比较,按照从小到大的顺序进行交换,这样一趟过去,最大的数字就被交换到了最后一位, 然后再从头开始两两比较交换,直到导数第二位时结束 步骤: 1、比较相邻的元素,如果前一个比后一个大,就交换它们两个 2、对第0个到第n-1个数据做同样的工作,这时,最小的数就会‘浮’到数组的最左边位置 3、对所以的元素重复上面的步骤,除了单一个 4、持续每次对越来越少的元素重复上面的步骤,知道没有任何一个数字需要比较 时间复杂度: O(n**2) 如果未优化的冒泡排序,最好的情况也是O(n**2),优化后的最好情况是O(n) 具体代码: 介绍: 保持最小元素在最左侧,用最左侧的元素依次和右边的元素比较,谁小谁放在左边。 思路:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子序列前面,直到全部记录排序完毕 步骤:1

Python的numpy高级应用!

匿名 (未验证) 提交于 2019-12-02 22:51:30
虽然NumPy用户很少会对数组的跨度信息感兴趣,但它们却是构建非复制式数组视图的重要因素。跨度甚至可以是负数,这样会使数组在内存中后向移动,比如在切片obj[::-1]或obj[:,::-1]中就是这样的。 高级数组操作 除花式索引、切片、布尔条件取子集等操作之外,数组的操作方式还有很多。虽然pandas中的高级函数可以处理数据分析工作中的许多重型任务,但有时你还是需要编写一些在现有库中找不到的数据算法。 与reshape将一维数组转换为多维数组的运算过程相反的运算通常称为扁平化(flattening)或散开(raveling): 对于常见的连接操作,NumPy提供了一些比较方便的方法(如vstack和hstack)。因此,上面的运算还可以表达为: 堆叠辅助类:r_和c_ NumPy命名空间中有两个特殊的对象一r_和c_,它们可以使数组的堆叠操作更为简洁: 元素的重复操作:title和repeat 对数组进行重复以产生更大数组的工具主要是repeat和tile这两个函数。repeat会将数组中的各个元素重复一定次数,从而产生一个更大的数组: tile的功能是沿指定轴向堆叠数组的副本。你可以形象地将其想象成“铺瓷砖”: 花式索引的等价函数:take和put 在第4章中我们讲过,获取和设置数组子集的一个办法是通过整数数组使用花式索引: put不接受axis参数,它只会在数组的扁平化版本

python numpy模块

匿名 (未验证) 提交于 2019-12-02 22:51:30
Ŀ¼ 回顾一下有哪些数据类型 int/float/str/list/tuple/dict/set numpy是python一种开源的数值计算扩展库.这种库可用来存储和处理大型矩阵,比python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵) 作用: 1.区别于list列表,提供了数组操作、数组运算、以及统计分布和简单的数学模型 2.计算速度快,甚至优于python内置的简单运算,使其成为pandas、sklearn等模块的依赖包。高级的框架如TensorFlow、PyTorch等,其数组操作也和numpy非常相似 矩阵即numpy的np.array对象,创建矩阵就是把==列表==传入np.array() import numpy as np 只有一行 相当于一条直线 lis =[1,2,3] lis [1, 2, 3] np.array(lis) array([1, 2, 3]) 有行有列 相当于一个面,里面有多条线,一个列表里装了多个一维 arr = np.array([ [1,2,3,4], [5,6,7,8] ]) arr #在pycharm中需要print(arr) array([[1, 2, 3, 4], [5, 6, 7, 8]]) 学习numpy的方法使用,先来联想一下list的内置方法使用 1.索引 2.切片 3.长度 4.成员运算 5.for循环 6

[翻译] NumSharp的数组切片功能 [:]

匿名 (未验证) 提交于 2019-12-02 22:06:11
原文地址: https://medium.com/scisharp/slicing-in-numsharp-e56c46826630 翻译初稿(英文水平有限,请多包涵): 由于 Numsharp 新推出了 数组切片 这个牛逼的功能,所以 .NET 社区距离拥有强大的开源机器学习平台又近了一步。 Python 之所以是机器学习的首选语言,部分原因就是因为它拥有一些牛逼的库,例如 NumPy 和 Tensorflow 。 与此同时, C # 开发人员也迫切需要用于机器学习和数据科学的强大开源库。而 NumSharp , 这个由 这个开源组织 全力推动的,要把 NumPy 移植到 C# 的这个项目 ,由于其最近全面实现了切片技术,从而向该目标迈进了一大步。该技术允许对 n 维数组随意的创建子集,并将其作为对原始数据的高效视图。因为这些,使得它与 TensorFlow.net 一起成为了 C # 中机器学习的有用工具。 牛逼在哪? 如果你没用过 NumPy ,你可能不知道切片技术有多好用, 数组允许通过对一定范围对元素进行索引来返回数组的一个切片,其索引操作是这样的: a[ start :end:step ] 。但是,只有使用 NumPy 复杂巧妙的数组实现,切片才成为一种真正强大的数据操作技术,若没有这种技术,机器学习或数据科学就无法想象了。 对于那些不能或不想因为机器学习就转换到

前端基础之JavaScript

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

JavaScript高级知识点整理

匿名 (未验证) 提交于 2019-12-02 21:53:52
JavaScript高级知识点整理 一、JS中的数组 1.数组的三种定义方式 (1)、实例化对象 var aArray=new Array(1,2,3,4,5); (2)、快捷创建 var aTwoArray = [1,2,3,"d","f"]; (3)、多维数组 var aThreeArray = [[1,2,3],["a","b","c"]]; 在这里,只有满足了数组中的元素是数组的时候才是多维数组 2.数组的操作 (1)、给数组增加单个或者多个元素 (2)、修改数组中的元素 (3)、删除数组中的元素 //第一个4表示 开始的角标包含4 2表示 删除的个数 aOneArray.splice(4,2); // 1是开始角标 2是删除个数 剩下的都是新增元素 aOneArray.splice(1,2,"g","h","i"); 如果想向数组中指定位置添加元素,可以这样写: 数组.splice(位置,0 ,元素);新增的元素会占据在指定起始角标上 (4)、获取数组中的元素 var sStr = aOneArray[4]; (5)、获取数组的长度 (6)、反转数组 (7)、获取元素在数组中的角标以及判断元素是否存在与数组中 (8)、将数组中的元素拼接成字符串 二、循环语句 1.if语句 2.for语句 3.while语句 4.do-while语句 5、使用循环去遍历数组

python爬虫---数据分析三剑客之: Numpy

 ̄綄美尐妖づ 提交于 2019-12-02 18:01:17
数据分析三剑客之: Numpy 一丶Numpy的使用 ​ numpy 是Python语言的一个扩展程序库,支持大维度的数组和矩阵运算.也支持针对数组运算提供大量的数学函数库 创建ndarray # 1.使用np.array() 创建一维或多维数据 import numpy as np arr = np.array([1,2,3,4,5]) # 一维 arr = np.array([[1,2,3],[4,5,6]])# 二维 ### 注意元素类型: # 1. numpy默认ndarray的所有元素的类型是相同的 # 2. 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int # 2. 使用 matplotlib.pyplot() 获取一个numpy数组,数据源是一张图片 import matplotlib.pyplot as plt img_arr = plt.imread('./cat.jpg') # 得到 一个三维数据源 # 数据源再转换成图片 plt.imshow(img_arr) # 可以对数据源进行计算 plt.imshow(img_arr - 100) 使用np的routines函数创建 # 1.创建等差数列 np.linspace(start, stop, num=50, endpoint=True, retstep=False,

数组[]

断了今生、忘了曾经 提交于 2019-12-02 16:59:50
a=[1,2,3,4,5,6,7,8,9,10] print a[0] #index从0开始 print a[1] print a[9] print a[-1] #倒数第一个数 print a[-2] print len(a) #长度等于个数 m=[1,2,3] #数组可以用for循环取值 for n in m: print n s=[] #可以定义空数组,不断增加元素 for j in range(1,6): s.append(j) print s a=[1,'2',3] b=[4,'as'] print a+b #可以直接拼接数组,不会去重。[1, '2', 3, 4, 'as'] 注意: a=[1,2,3,4] b= a.reverse() print a print b 输出: [4, 3, 2, 1] None https://www.cnblogs.com/emilyliu/p/8647619.html ****** 列表、list、数组、array都是一个意思,下标、索引、角标、编号也是一个意思,根据这个来取值 new_stus = ['emily','刘佳','刘佳1','刘佳2','刘佳3','emily1'] print(new_stus[0]) print(new_stus[-1]) 输出结果:下标为0 的是emily,下标为-1则指最后一个,emily11

js笔记-上

落花浮王杯 提交于 2019-12-02 16:31:22
函数 1、函数声明 没有参数的函数 function kd(){ console.log('hello'); } kd(); //函数的直接调用法 有参数的函数 function kd(name,age){ console.log('姓名:'+name+' , 年龄:'+age); } kd('杜兰特',31); // 姓名:杜兰特 , 年龄:31 2、return返回值 用return的好处: 可以退出函数 return返回与直接调用函数的区别是,return返回是在函数外面输出值,这种方法最常用 返回的值可以赋值给变量 function kd(){ return '死神-杜兰特'; } kd(); //如果直接调用,就会变成下面这样 "死神-杜兰特" console.log(kd()); //无参数的函数返回 // 死神-杜兰特 ------------------------------------------ function kd(name,age){ return'姓名:'+name+' , 年龄:'+age; } console.log(kd('杜兰特',31));//有参数的函数返回 //姓名:杜兰特 , 年龄:31 ------------------------------------------- function add(n1,n2){ return n1

排序题目之两个数组的交集

允我心安 提交于 2019-12-02 12:59:40
题目:给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2] 示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4] 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 首先说一下我自己的(菜鸡)思路:我先是想先去重第第一个数组(nums1),然后循环判断值是否在nums2中,有的话,添加新的列表中。 代码实现如下例1: 1 class Solution: 2 def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]: 3 num1 = set(nums1) 4 num = [i for i in num1 if i in nums2] 5 return num 还有一种类似的方法例2: 1 class Solution: 2 def set_intersection(self, set1, set2): 3 return [x for x in set1 if x in set2] 4 5 def intersection(self, nums1, nums2): 6 """ 7 :type nums1: List[int] 8