2019-01-16 Numpy基础

为什么使用numpy

numpy是Python的一种开源的科学计算库
NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。
NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。

ndarray到底跟原生python列表的区别:

ndarray在存储数据的时候,数据与数据的地址都是连续的,这样就给使得批量操作数组元素时速度更快。

这是因为ndarray中的所有元素的类型都是相同的,而Python列表中的元素类型是任意的,所以ndarray在存储元素时内存可以连续,而python原生list就只能通过寻址方式找到下一个元素,这虽然也导致了在通用性能方面Numpy的ndarray不及Python原生list,但在科学计算中,Numpy的ndarray就可以省掉很多循环语句,代码使用方面比Python原生list简单的多。

numpy内置了并行运算功能,当系统有多个核心时,做某种计算时,numpy会自动做并行计算

Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码。

几种数组类型的比较

一.python中的List
(1)数组生成方法

L= [i for i in range(5)]
L=[1,2,3,4,5]

(2) 数组元素修改方法

L[5] = 'welcome to dataAnalysis'

(3)添加元素

  1. append() 追加单个元素到List的尾部,只接受一个参数,参数可以是任何数据类型,被追加的元素在List中保持着原结构类型。此元素如果是一个list,那么这个list将作为一个整体进行追加,注意append()和extend()的区别。
  2. extend() 将一个列表中每个元素分别添加到另一个列表中,只接受一个参数;extend()相当于是将list B 连接到list A上。
  3. insert() 将一个元素插入到列表中,但其参数有两个(如insert(1,”g”)),第一个参数是索引点,即插入的位置,第二个参数是插入的元素。
    • 加号,将两个list相加,会返回到一个新的list对象,注意与前三种的区别。前面三种方法(append, extend, insert)可对列表增加元素的操作,他们没有返回值,是直接修改了原数据对象。 注意:将两个list相加,需要创建新的list对象,从而需要消耗额外的内存,特别是当list较大时,尽量不要使用“+”来添加list,而应该尽可能使用List的append()方法。
L.append('jdc')

(4) 删除元素
1.使用del删除对应下标的元素
2.使用.pop()删除最后一个元素
3.删除指定值的元素 remove
4.使用切片来删除

del L[0] #对应下标的元素
L.pop()
L.remove(1) #对应元素

(4)List中可以存储不同类型的数据,不对存储类型进行检查,缺点,性能低要检查每个元素的类型
2.array模块
(1)使用之前要引入模块

import array

(2)Python虽然也提供了array模块,但其只支持一维数组,不支持多维数组,也没有各种运算函数。因而不适合数值运算
(3)具体使用见下链接
https://www.cnblogs.com/dengyg200891/p/4946399.html
三、Numpy模块
1.创建数组/矩阵的方法
(1)指定元素直接创建
(2)使用循环指定元素
(3)使用函数生成
zeros
eye
ones
arange
linspace
full

****************
numpy.array([1,2,3,4])  #生成一维数组
numpy.array([[1,2,3],[4,5,6]]) #生成二维矩阵
***************
numpy.array([i for i in range(10)]) #生成一维数组
numpy.array([i for i in range(15)]).reshape(3,5)#使用reshape变成二维矩阵
***************
#生成全零数组/矩阵
numpy.zeros(10)
numpy.zeros(10).reshape(2,5)
numpy.zeros((2,2)) #可指定元组,直接生成矩阵,代表行列数量
np.zeros(shape=(3,5),dtype=int)
#生成对角矩阵
numpy.eye(10)
#生成全1数组/矩阵,可指定元素的数据类型
numpy.ones(10,dtype=int)
numpy.ones(10,dtype=int).reshape(2,5)
#生成数组/矩阵里面元素的所有值都一样
numpy.full(10,10)
np.full((3, 5), 666) #后面指定元素的值
np.full((3, 5), fill_value=666.6)
#直接生成
numpy.arange(10)
out:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(0, 20 , 2) #指定起始和结束位置以及步长
np.arange(0, 10)  #默认步长为1
np.linspace(0, 20 , 10) #生成等间距的数组,起始位置结束位置+元素的个数


2.numpy随机数
(1)生成随机整数

numpy.random.randint(1,10) #生成[1,10) 之间的整数
numpy.random.randint(1,10,size=20) #生成随机数组
numpy.random.randint(1,10,size=(2,3)) #生成随机矩阵

(2)生成随机浮点数

numpy.random.random(10)
np.random.random() #生成[0, 1) 随机浮点数
np.random.random(10) #生成[0, 1) 随机浮点数
np.random.random((3, 5)) #生成[0, 1) 随机浮点数

(3)生成指定均值和方差的浮点数

np.random.normal() #均值为0 方差为1 随机浮点数
np.random.normal(10, 100) #均值为10方差为100 随机浮点数
np.random.normal(0, 1, (3, 5)) #

3.修改元素值
可直接修改

nparr[5] = 100

4.numpy其他
(1)查看元素的数据类型

nparr.dtype  #numpy对象名.dtype

(2)numpy数据类型如果数据类型不匹配要进行数据类型转换,则进行截位操作,不进位
(3)数据类型转换
直接调用函数

npz.astype(float)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容