python数组

python-使用递归实现二分法

巧了我就是萌 提交于 2020-03-06 21:45:38
在上一篇中简单介绍了递归的使用, 请戳这里 。 在此篇中,主要介绍如何用递归实现二分法。 在使用二分法之前,首先要有个前提,那就是这个数组必须是 有序数组 。主要的思路为:   ①先取出数组中的一个中间值, 和我们需要找的数字进行对比,如果恰好相等,则说明找到该数字,如果数组的中间值大于需要查找的数组,接下来的查找范围就为中间值之前的数组。反之为中间值之后的数组  ②对数组不断的缩小范围,最后当数组中只有一个数字时,再进行比较,如果相等,则找到,否则需要查找的数字就不在我们的数组中。 代码如下: def binary_search(data_source, find_number): """定义二分法""" mid = int(len(data_source)/2) #先取数组中的中间值 if len(data_source) > 1: #判断整个数组中的数字个数 if data_source[mid] > find_number: print('data is left of %s' % data_source[mid]) binary_search(data_source[:mid], find_number) elif data_source[mid] < find_number: print('data is right of %s' % data_source[mid])

ndarray数组的索引和切片

十年热恋 提交于 2020-03-06 10:10:37
索引:获取数组中特定位置元素的过程 切片:获取数组元素子集的过程 import numpy as np 一维数组 一维数组的索引和切片与python中的列表类似 索引:若元素个数为n,则索引下标可表示为[0,1,2,...,n-1]或[-n,-(n-1),-(n-2),...,-2,-1] print(' ' 8+'一维数组的索引和切片'+' ' 8) 若元素个数为n,则索引下标可表示为[0,1,2,...,n-1]或[-n,-(n-1),-(n-2),...,-2,-1] ar1 = np.array([5, 6, 7, 8, 9]) print(ar1[4]) # 索引自左向右从下标0开始 print(ar1[-2]) # 索引自右向左从下标-1递减,最右边为-1,相邻的为-2 切片:切片可用三元素冒号分割 ar1[起始编号 : 终止编号(不含) : 步长],起始编号默认是0,终止编号默认是n,步长默认是1 仍然是ndarray数组 b = ar1[1:4:2] print(b) print(type(b)) 多维数组 ar2 = np.arange(24).reshape((2, 3, 4)) print(' ' 8+'多维数组的索引和切片'+' ' 8) 多维数组的索引,每个维度一个索引值,逗号分隔————r2[ax0上索引,ax1上索引,ax2上索引]

利用Python进行数据分析| 4 NumPy基础:数组和矢量计算

蹲街弑〆低调 提交于 2020-03-04 15:24:49
ndarray:一种多维数组对象,是一个快速而灵活的大数据集容器,可以利用其对整块数据执行运算。 广播(broadcasting):不同大小的数组之间的运算 基本的索引和切片:当你将⼀个标量值赋值给⼀个切⽚时(如arr[5:8]=12),该值会⾃动传播(也就说后⾯将会讲到的“⼴播”)到整个选区。跟列表最重要的区别在于,数组切⽚是原始数组的视图。这意味着数据 不会被复制 ,视图上的任何修改都会直接反映到源数组上。 二维数组的表示方法: 通过布尔型设置数组 花式索引(Fancy indexing):利用整数数组进行索引 #以特定顺序选取⾏⼦集,只需传⼊⼀个⽤于指定顺序的整数列表或ndarray即可 arr=np.empty((8,4)) for i in range(8): arr[i]=i arr arr[[4,3,0,6]] arr[[0,1],[3,2]] #花式索引跟切⽚不⼀样,它总是将数据复制到新数组中。 数组转置和轴对换 #数组转置 arr=np.arange(15).reshape((3,5)) print(arr) print(arr.T) #计算矩阵内积 arr=np.random.randn(6,3) np.dot(arr.T,arr) 对于⾼维数组,transpose需要得到⼀个由轴编号组成的元组才能对这些轴进⾏转置: arr = np.arange(16)

Numpy_05 数据处理

别等时光非礼了梦想. 提交于 2020-03-04 08:25:22
github博客传送门 csdn博客传送门 Numpy系列 Numpy_01 创建 指定数据类型 查看维度和数据类型 简单的数学运算 Numpy_02 索引和切片 Numpy_03 转置和轴对换 Numpy_04 通用函数 Numpy_05 数据处理 Numpy_06 数组的文件输入输出 线性代数 利用数组进行数据处理 import numpy as np points = np.arange(-5, 5, 1) # 100个等间距点 xs, ys = np.meshgrid(points, points) # 接收两个一维数组 返回两个二维数组 print('xs:\n', xs) # 返回一个 数组元素个数这么多行的二维数组 内容和一维的数组一样 print('ys:\n', ys) # 返回一个 数组元素个数这么多汗的二维数组 内容为原数组的一个元素为一行 print('-------------------------------') # 两点间距离公式 z = np.sqrt(xs ** 2 + ys ** 2) # 对 xs 的每个元素平方加上 ys 的每个元素平方 再开方并返回 print(z) 将条件逻辑表述为数组运算 xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5]) yarr = np.array([2.1, 2.2, 2.3,

Pandas

∥☆過路亽.° 提交于 2020-03-04 00:05:27
一、简介 pandas是一个强大的Python数据分析的工具包,它是基于Numpy构建的,正因pandas的出现,让Python语言也成为使用最广泛而且强大的数据分析环境之一。 Pandas的主要功能: 具备对其功能的数据结构DataFrame,Series 集成时间序列功能 提供丰富的数学运算和操作 灵活处理缺失数据 安装方法: pip install pandas 引用方法: import pandas as pd 二、Series Series是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成 2.1创建方法 第一种: pd.Series([4,5,6,7,8]) 执行结果: 0 4 1 5 2 6 3 7 4 8 dtype: int64 # 将数组索引以及数组的值打印出来,索引在左,值在右,由于没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引,取值的时候可以通过索引取值,跟之前学过的数组和列表一样 ----------------------------------------------- 第二种: pd.Series([4,5,6,7,8],index=['a','b','c','d','e']) 执行结果: a 4 b 5 c 6 d 7 e 8 dtype: int64 # 自定义索引,index是一个索引列表

【牛客】剑指offer2-替换空格

丶灬走出姿态 提交于 2020-03-03 14:55:07
解题思路: 在Python和Java等语言中,字符串都被设计成不可变的类型,即无法直接修改字符串的某一位字符,需要新建一个字符数组来实现。 如果是用Java或c语言实习,则需要在最开始建立字符数组,该字符数组地长度为原来字符串s的长度的3倍,这样可以保证字符数组能容纳所有替换后的字符。 由于Python语言的特殊性,不需要考虑去设定字符数组的长度问题。 伪代码: 初始化一个list,记为res,用来存放新建的字符串 循环遍历列表s中的每个字符c: 当c为空格时,向res后添加字符串'%20' 当c不为空格时,向res后添加字符c 将列表res转化为字符串并返回 代码: class Solution: def replaceSpace(self, s): """ :param s: str :return: str """ res = [] for c in s: if c == ' ': res.append('%20') else: res.append(c) return "".join(res) 复杂度分析: 时间复杂度O(N):遍历使用O(N),每轮添加(修改)字符操作使用O(1); 空间复杂度O(N):Python建立新的list和Java新建字符数组都使用了线性大小的额外空间 Reference: 1.LeetCode题解 来源: CSDN 作者: sinat

LEETCODE打卡02

走远了吗. 提交于 2020-03-03 03:51:18
Leetcode打卡Day2 数组删重 (python,c++) 题目: // nums是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int len = removeDuplicates ( nums ) ; // 在函数里修改输入数组对于调用者是可见的。 // 根据你的函数返回的长度,它会打印出数组中该长度范围的所有元素。 for ( int i = 0 ; i < len ; i + + ) { print ( nums [ i ] ) ; } method 1: c++求解 1. class Solution { 2. public : 3. int removeDuplicates ( vector < int > & nums ) { 4. if ( nums . size ( ) < 2 ) 5. return nums . size ( ) ; int i , j = 0 ; 6. for ( i = 0 ; i < nums . size ( ) ; i ++ ) 7. { 8. if ( nums [ i ] != nums [ j ] ) ++ j ; 9. nums [ j ] = nums [ i ] ; 10. } 11. return j + 1 ; } } ; c++很简单很好写,运行效果也不错。 method 2:python class

跟黄哥学python序列文章之python二分查找算法

一笑奈何 提交于 2020-03-01 04:07:20
#跟黄哥学python序列文章之python二分查找算法 在计算机科学中,二分查找算法(binary search)、也称折半搜索(英语:half-interval search), 二分搜索法、二分搜索、二分探索,是一种在有序数组中查找某一特定元素的搜索算法。 搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束; 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找, 而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。 这种搜索算法每一次比较都使搜索范围缩小一半。 (来源于维基百科) 二分查找循环版 #! /usr/bin/python # coding:utf-8 def binary_search_while(key, arr): '''list 必须是排序好的 黄哥python培训_python编程思路之四 咨询qq:1465376564 http://www.tudou.com/programs/view/Z4IClY5Wj-g/ 运维如何通过学习python学会编程 https://github.com/pythonpeixun/article/blob/master/python/how_to_learn_python.md 黄哥python远程视频培训班 https://github.com

python学习笔记第二十二天--------NumPy(三)

强颜欢笑 提交于 2020-03-01 01:34:12
import numpy as np arr = np . random . randn ( 3 , 4 ) arr array([[-0.88890007, 0.43451555, -0.32082365, -0.66832376], [ 1.21584378, -1.1086847 , 0.28206634, 0.81483576], [ 1.19277385, -1.30662326, -0.52841719, 0.60418654]]) # 取最接近的比自己大的整数 print ( np . ceil ( arr ) ) [[-0. 1. -0. -0.] [ 2. -1. 1. 1.] [ 2. -1. -0. 1.]] # 取最接近的比自己小的整数 print ( np . floor ( arr ) ) [[-1. 0. -1. -1.] [ 1. -2. 0. 0.] [ 1. -2. -1. 0.]] # 四舍五入 print ( np . rint ( arr ) ) [[-1. 0. -0. -1.] [ 1. -1. 0. 1.] [ 1. -1. -1. 1.]] 文章目录 ndarray的统计函数 元素的判断函数 # 取每个元素的绝对值 print ( np . abs ( arr ) ) [[ 0.88890007 0.43451555 0

python学习笔记(2):科学计算及数据可视化入门

拈花ヽ惹草 提交于 2020-02-26 22:10:08
一、NumPy   1.NumPy:Numberical Python   2.高性能科学计算和数据分析的基础包   3.ndarray,多维数组(矩阵),具有矢量运算的能力,快速、节省空间     (1)ndarray,N维数组对象(矩阵)     (2)所有元素必须是相同类型     (3)ndim属性,维度个数     (4)shape属性,各维度的大小     (5)dtype属性,数据类型   4.矩阵运算,无需循环,可完成类似Matlab中的矢量计算   5.线性代数、随机数生成   6.import numpy as np narray多维数组 import numpy as np #生成指定维度的随机多维数组 data = np.random.rand(2,3) //生成一个两行三列的多维数组 print dataprint type(data)      //查看数据类型,这个地方数据类型是numpy.ndarray的数据类型 [[0.16088508 0.86321185 0.25653982] [0.42456419 0.33277194 0.30046417]] <class 'numpy.ndarray'># print '维度个数', data.ndim    //维度个数 2     维度个数有两个,第0个维度大小是2,第一个维度大小是3print