python数组

python中numpy库ndarray多维数组的的运算:np.abs(x)、np.sqrt(x)、np.modf(x)等

六眼飞鱼酱① 提交于 2020-01-12 15:55:19
numpy库提供非常便捷的数组运算,方便数据的处理。 1、数组与标量之间可直接进行运算 In [45]: a Out[45]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) In [46]: a/5 Out[46]: array([[ 0. , 0.2, 0.4, 0.6], [ 0.8, 1. , 1.2, 1.4], [ 1.6, 1.8, 2. , 2.2]]) 1 2 3 4 5 6 7 8 9 10 11 2、NumPy一元函数对ndarray中的数据执行元素级运算的函数 np.abs(x)、np.fabs(x) : 计算数组各元素的绝对值 np.sqrt(x) : 计算数组各元素的平方根 np.square(x) : 计算数组各元素的平方 np.log(x) 、np.log10(x)、np.log2(x) : 计算数组各元素的自然对数、10底对数和2底对数 np.ceil(x) 、np.floor(x) : 计算数组各元素的ceiling值或floor值 In [48]: a[1,1] = -1 In [49]: a Out[49]: array([[ 0, 1, 2, 3], [ 4, -1, 6, 7], [ 8, 9, 10, 11]]) In [50]: np.abs(a) Out[50]:

数组和字典

。_饼干妹妹 提交于 2020-01-11 20:51:27
数组:数组用方括号([])表示,里面的每一项用逗号(,)隔开。python允许数组里面任意的放置数字和字符串。数组下表是从0开始,所以,list[0]会输出数组中的第一项。 1 lists = [1,2,3,'a',5] 2 lists 3 [1,2,3,'a',5] 4 5 list[0] 6 1 字典:字典用花括号({})表示,里面的项成对出现,一个key对应一个vaule。key和value之间用冒号(:)分隔,不用项之间用逗号(,)分隔。 1 dicts = {"username":"zhangsan","password":123456} 2 dicts.keys() 3 {"username","password"} python中,("")和('')无区别,都可以用于字符串的表达。 想要使字典中keys和values按照字典中的存放顺序返回,可以用个zip方法 1 #通过zip方法合并两个list为dictionary 2 #遍历会按原先的顺序 3 keys = ['b','a','c','e','d'] 4 value = ['2','1','3','5','4'] 5 6 for key,value in zip{keys,values}: 7 print(key,value) 来源: https://www.cnblogs.com/demonszz/p

DAY1数组

穿精又带淫゛_ 提交于 2020-01-11 00:43:14
组队学习详情:https://github.com/datawhalechina/team-learning/blob/master/数据结构与算法(上)/学习任务.md 1. 数组定义 数组是一种线性数据结构,用连续的存储空间存储相同类型数据 线性表:数组、链表、队列、栈 非线性表:树、图 连续的内存空间、相同的数据,所以数组可以随机访问;但对数组进行删除、插入时,为了保证数组的连续性,就要做大量的数据搬移工作 2. 数组与链表区别 数组是顺序的存储结构,链表是链式的存储结构 链表的插入删除元素相对数组较为简单,不需要移动元素,且较为容易实现长度扩充,但是寻找某个元素较为困难。 数组插入数据和删除数据效率低,插入数据时,这个位置后面的数据在内存中都要向后移。删除数据时,这个数据后面的数据都要往前移动。 随机读取效率很高。因为数组是连续的,知道每一个数据的内存地址,可以直接找到给地址的数据。 在内存中,数组是一块连续的区域 3. 为什么数组要从 0 开始编号,而不是从 1 开始呢 从偏移角度理解 a[0] 为什么循环要写成for(int i = 0;i<3;i++)而不是for(int i = 0;i<=2;i++)? 留一个问题 练习部分 以下代码为C & python 版本 1 利用动态数组解决数据存放问题 编写一段代码,要求输入一个整数N,用动态数组A来存放2

数组索引 笔记2

霸气de小男生 提交于 2020-01-07 16:23:16
数组的类型及形状 numpy里面的数据类型 numpy里面的数据类型,其实就是封装了python里面的基础的数据类型,然后还进行细致划分,之后封装为np . 数据类型 1 ,创建数组的时候通过dtype属性来指定 元素的数据类型 arr = np . array ( [ 1 , 2 , 3 , 4 ] ) , dtype = float32 ( ) 2 ,也可以进行强制转换 res = np . float32 ( 5 ) 3 ,可以通过stype来修改数据类型 将arr的float32类型转化为int32类型 arr = arr . astype ( np . int32 ) arr . dtype = np . int32 - - > 转化类型正确,但是元素发生变化,不建议用 4 ,ndarray也可以存储复合数据类型 - - 了解 存储人对象 - - 人对象 3 个属性 - - 姓名,身高,体重 df = np . dtype ( [ ( 'name' , np . str , 40 ) , ( 'high' , np . float32 ) , ( 'weight' , np . float32 ) ] ) #创建一个存储复合数据的数组对象 arr = np . arrpy ( [ ( 'bq' , 168.5 , 50.5 ) , ( 'yf' , 172 , 55 )

[LeetCode]题解(python):004-Median of Two Sorted Arrays

青春壹個敷衍的年華 提交于 2020-01-04 01:21:04
题目来源: https://leetcode.com/problems/median-of-two-sorted-arrays/ 题意分析: 这道题目是输入两个已经排好序的数组(长度为m,n),将这两个数组整合成一个数组,输出新数组的中位数。要求时间复杂度是(log(m + n)。比如如果输入[1,2,3],[3,4,5]。那么得到的新数组为[1,2,3,3,4,5]得到的中位数就是3. 题目思路: 由于题目要求的时间复杂度是(log(m+n)),如果我们直接把两个数组整合一起,那么时间复杂度肯定超过(log(m+n))。所以整理肯定是不行的。那么还有什么方法吗?答案是肯定的。 首先我们要先了解中位数的概念,中位数就是有序数组的中间那个数。那么如果我们将比中位数小的数和比中位数大的数去掉同样的个数,中位数的值也不会变化 (数组的个数为偶数的时候另外讨论,因为那时候中位数是中间两个数的平均值,所以中位数旁边两个数不能去掉) 。 所以我们不妨试着将数组长度不断缩短。这里不妨提出一个引理。假设有两个有序数组a m ,b n ,他们整合后的有序数组为c n+m 。他们的中位数分别是a m /2 ,b n /2 ,c (m+n)/2 。如果a m /2 < b n /2 ,则 a 0 …m/2 <= c (m+n)/2 <= b n /2…n 。 引理证明: 假设 a m/2 > c (m

利用Python进行数据分析(5) NumPy基础: ndarray索引和切片

时光总嘲笑我的痴心妄想 提交于 2020-01-03 02:33:16
概念理解 索引 即通过一个无符号整数值获取数组里的值。 切片 即对数组里某个片段的描述。 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为array[index1:index2],意思是从index1索引位置开始,到index2索引(不包括index2)位置结束的一段数组。例如: 当把一个值赋值为一个切片时,该值会作用于此数组片段里每一个元素,例如: 二维数组 二维数组的索引 当以一维数组的索引方式访问一个二维数组的时候,获取的元素不在是一个标量而是一个一维数组。例如: 既然二维数组的索引返回是一维数组,那么就可以按照一维数组的方式访问其中的某个标量了,例如: 二维数组的切片 既然二维数组的索引对应的是一维数组,则二维数组的切片是一个由一维数组组成的片段: 多维数组 多维数组的索引 在一维数组里,单个索引值返回对应的标量; 在二维数组里,单个索引值返回对应的一维数组; 则在多维数组里,单个索引值返回的是一个纬度低一点的数组,例如: 布尔值索引 布尔值索引指的是一个由布尔值组成的数组可以作为一个数组的索引,返回的数据为True值对应位置的值,例如: 花式索引 花式索引指的是用整数数组进行索引。例如: 接下来一篇随笔内容是:利用Python进行数据分析(6) NumPy基础: ndarray矢量运算

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

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

Python中NumPy基础使用

白昼怎懂夜的黑 提交于 2020-01-03 02:27:54
Python发展至今,已经有越来越多的人使用python进行科学技术,NumPY是python中的一款高性能科学计算和数据分析的基础包。 ndarray ndarray(以下简称数组)是numpy的数组对象,需要注意的是,它是同构的,也就是说其中的所有元素必须是相同的类型。其中每个数组都有一个shape和dtype。 shape既是数组的形状,比如 1 import numpy as np 2 from numpy.random import randn 3 4 arr = randn(12).reshape(3, 4) 5 6 arr 7 8 [[ 0.98655235 1.20830283 -0.72135183 0.40292924] 9 [-0.05059849 -0.02714873 -0.62775486 0.83222997] 10 [-0.84826071 -0.29484606 -0.76984902 0.09025059]] 11 12 arr.shape 13 (3, 4) 其中(3, 4)即代表arr是3行4列的数组,其中dtype为float64 一下函数可以用来创建数组 array   将输入数据转换为ndarray,类型可制定也可默认 asarray   将输入转换为ndarray arange 类似内置range ones、ones_like  

python---numpy

假如想象 提交于 2020-01-03 02:26:57
一 概述   NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 他也开发了另一个包 Numarray ,它拥有一些额外的功能。 2005年,Travis Oliphant 通过将 Numarray 的功能集成到 Numeric 包中来创建 NumPy 包。 这个开源项目有很多贡献者。 NumPy是 高性能科学计算和数据分析 的基础包。部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成C、C++、Fortran等语言编写的代码的工具。 二 创建矩阵   NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型。 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。 ndarray 中的每个元素在内存中使用相同大小的块。 ndarray 中的每个元素是数据类型对象的对象(称为 dtype )。从 ndarray 对象提取的任何元素(通过切片)由一个数组标量类型的 Python

Python-数据分析模块

爷,独闯天下 提交于 2020-01-01 16:15:44
目录 numpy 模块 matplotlib 模块 pandas 模块 numpy 模块 numpy 模块主要用来做数据分析,对numpy数组 进行科学运算 主要方法和常用属性,都是用numpy 生成的对象 . 出来的 import numpy as np 属性 描述 T 数组的转置,行和列一一对应,重构,每行2个元素 dtype 数组元素的数据类型(int32 和 float64) size 数组元素的个数 ndim 数组的维数 shape 数组的维度大小(有几行几列) astype 数据类型转换 常用方法 描述 元素切分 [:,:] 表示行和列 逻辑取值 取出用numpy生成的数组对象 > 4的元素 赋值 取出用numpy生成的数组对象的索引值 = 0 数组横向合并 行和行合并,列和列合并 数组垂直合并 相当于list update,直接添加元素 数组函数 描述 np.array() 将列表转换为数组,可选择是否制定dtype np.ones() 传入行数和列数,值都为1 np.zeros() 传入行数和列数,值都为0 np.eye() 输入行数和列数,对角值为1 np.arange() 和列表的range方法一样,支持浮点数 np.linspace() 类似arange(),第三个参数为数组长度 np.empty() 创建一个元素全随机的数组 np.reshape()