numpy的学习

ndarray的属性

属性 说明
.ndim 秩,即轴的数量或维度的数量
.shape ndarray对象的尺度,对于矩阵,n行m列
.size ndarray对象元素的个数,相等于.shape中n*m的值
.dtype ndarray对象的元素类型
.itemsize ndarray对象中每个元素的大小。以字节为单位

import numpy as np 

a=np.array([[0,1,2,3,4],[9,8,7,6,5]])

a
Out[3]: 
array([[0, 1, 2, 3, 4],
       [9, 8, 7, 6, 5]])

a.ndim
Out[4]: 2

a.shape
Out[6]: (2, 5)

a.size
Out[7]: 10

a.dtype
Out[8]: dtype('int32')

a.itemsize
Out[9]: 4

ndarray的元素类型

数据类型 说明
bool 布尔类型,True或False
intc 与C语言中的int类型一致,一般是int32或Int64
intp 用于索引的整数,与C语言中的ssize_t一致,int32或int64
int8 字节长度的整数,取值:[-127,128]
int16 16位的长度的整数,取值[-3276832767]
int32 32位长度的整数,取值:[-231, -231-1]
int64 64位的长度的整数,取值[-263 ,263-1]

ndarray的元素类型

数据类型 说明
uint8 8位无符号整数,取值:[0,255]
uint16 16位无符号整数,取值:[0,65535]
uint32 32位无符号整数,取值:[0,232-1]
uint64 32位无符号整数,取值:[0,264-1]
float16 16位半精度浮点数,1位符号位,5位指数,10位尾数
float32 32位半精度浮点数,1位符号位,8位指数,23位尾数
float64 64位半精度浮点数,1位符号位,11位指数,52位尾数
complex64 复数类型,实部和虚部都是32位的浮点数
complex128 复数类型,实部和虚部都是64位的浮点数

实数(.real)+j虚部(.imag)

ndarray数组的创建方法:

(1)从python中的列表,元组类型创建的ndarray数组,
x=np.array(list/tuple)
x=np.array(list/tuple,dtype=np.float32)
当np.array()不指定dtype的时候,Numpy将根据情况关联一个dtype类型

  • 从列表创建:
    x=np.array([0,1,2,3])
  • 从元组类型创建
    np.array((4,5,6,7))
  • 从列表和元组混合类型创建
print(np.array([[1,2],[9,8],(0.1,2.3)]))
[[1.  2. ]
 [9.  8. ]
 [0.1 2.3]]

记得列表和元组的类型同质,长度一致

(2) 使用NumPy中函数创建ndarray数组,如:arange,ones,zeros等

函数 说明
np.arange(n) 类似range()函数,返回ndarray类型,元素从0到n-1
np.ones(shape) 根据shape生成一个全1的数组,shape是元组类型
np.zeros(shape) 根据shape生成一个全0的数组,shape是元组类型
np.full(shape,val) 根据shape生成一个数组,每一个元素值都是val
np.eye(n) 创建一个正方的n*n单位矩阵,对角线为1。其余为0

例子:
·np.arange(10) Out[21]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

np.ones((3,6))
Out[28]: 
array([[1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.]])
np.zeros((3,6),dtype=np.int32)
Out[29]: 
array([[0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0]])
np.eye(5)
Out[30]: 
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])
单位矩阵
Out[31]: 
array([[[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]],

       [[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]]])

(3)使用NumPy中函数创建ndarray数组,如:arange,ones,zeros等

函数 说明
np.ones_like(a) 根据数组a的形状生成一个全1数组
np.zeros_like(a) 根据数组a的形状生成一个全0的数组
np.full_like(a,val) 根据数组a的形状生成一个数组,每个元素都是val
np.linspace() 根据起止数据等间距的填充数据,形成数组
np.concatenate() 将两个或多个数组合并成一个新的数组
 a=np.linspace(1,10,4,dtype=np.int32)
a=np.linspace(1,10,4,dtype=np.int32,endpoint=False)

print(a)
[1 3 5 7]

a=np.linspace(1,10,4,endpoint=False)

print(a)
[1.   3.25 5.5  7.75]

print(np.concatenate((A,B)))
[ 1.    3.25  5.5   7.75  1.    4.    7.   10.  ]

ndarray数组的维度变换

函数 说明
.reshape(shape) 不改变数组,返回一个shape形状的数组,原数组不变
.resize(shape) 与.reshape()功能一致,但修改原数组
np.full_like(a,val) 根据数组a的形状生成一个数组,每个元素都是val
np.swapaxes(ax1,ax2) 将数组的n个维度进行调换
np.flatten() 对数组进行降维,返回折叠后的一维数组,原数组不变
a=np.ones((2,3,4),dtype=np.int32)

print(a)
[[[1 1 1 1]
  [1 1 1 1]
  [1 1 1 1]]

 [[1 1 1 1]
  [1 1 1 1]
  [1 1 1 1]]]

a.reshape((3,8))
Out[57]: 
array([[1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1]])

resize改变原数组


a.resize((4,6))

print(a)
[[1 1 1 1 1 1]
 [1 1 1 1 1 1]
 [1 1 1 1 1 1]
 [1 1 1 1 1 1]]
a.flatten()
Out[60]: 
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1])

ndarray数组的类型变换

new_a=a.astype(new_type)

a.astype(np.float)
Out[63]: 
array([[1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.]])

ndarray数组向列表的转换

ls=a.tolist()


a.tolist()
Out[65]: 
[[1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1]]

数组的索引和切片

索引:获取数组中特定位置元素的过程

切片:获取数组中元素自己的过程
一维数组的索引和切片:与python的列表类似


a=np.array([9,8,7,6,5])

a
Out[75]: array([9, 8, 7, 6, 5])

a[2]
Out[76]: 7

a[1:4:2]
Out[77]: array([8, 6])```

a=np.arange(24)

a
Out[80]: 
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23])

a.reshape(3,8)
Out[81]: 
array([[ 0,  1,  2,  3,  4,  5,  6,  7],
       [ 8,  9, 10, 11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20, 21, 22, 23]])
image.png
image.png

数组的运算

数组与标量之间的运算作用于数组的每一个元素

a.mean()
Out[90]: 11.5
平均值

计算a与元素平均值的商
a=a/a.mean()

a=a/a.mean()

a
Out[93]: 
array([[0.        , 0.08695652, 0.17391304, 0.26086957, 0.34782609,
        0.43478261, 0.52173913, 0.60869565],
       [0.69565217, 0.7826087 , 0.86956522, 0.95652174, 1.04347826,
        1.13043478, 1.2173913 , 1.30434783],
       [1.39130435, 1.47826087, 1.56521739, 1.65217391, 1.73913043,
        1.82608696, 1.91304348, 2.        ]])

Numpy一元函数

函数 说明
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值
np.rint(x) 计算数组各元素的四舍五入值
np.modf(x) 将数组各元素的小数和整数部分以两个独立的数组形式返回
np.cos(x) np.cosh(x) np.sin(x) np.sinh(x) np.tan(x) np.tanh(x) 计算各元素的小数和整数部分以独立的数组形式返回
np.exp(x) 计算数组各元素的指数值
np.sign(x) 计算数组各元素的符号值,1(+),0,-1(-)
np.modf(a)
Out[98]: 
(array([[0., 0., 0., 0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0.]]),
 array([[ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.],
        [ 8.,  9., 10., 11., 12., 13., 14., 15.],
        [16., 17., 18., 19., 20., 21., 22., 23.]]))

np.square(a)
Out[100]: 
array([[  0,   1,   4,   9,  16,  25,  36,  49],
       [ 64,  81, 100, 121, 144, 169, 196, 225],
       [256, 289, 324, 361, 400, 441, 484, 529]], dtype=int32)

numpy的二元函数

函数 说明
+ - * / ** 两个数组各元素进行对应运算
np.maximun(x,y) np.fmax() np. minmun(x,y) np.fmin() 元素级的最大值/最小值的计算
np.mod(x,y) 元素级的摸运算
np.copysign(x,y) 将数组y中各元素值的符号复制给数组x对应的元素
> < >= <= == != 算术比较,产生布尔型的数组
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 基础篇NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(...
    oyan99阅读 5,122评论 0 18
  • 一、numpy概述 numpy(Numerical Python)提供了python对多维数组对象的支持:ndar...
    L_steven的猫阅读 3,463评论 1 24
  • 先决条件 在阅读这个教程之前,你多少需要知道点python。如果你想从新回忆下,请看看Python Tutoria...
    舒map阅读 2,573评论 1 13
  • 该内容来源于:https://blog.csdn.net/cxmscb/article/details/54583...
    Sper_CL阅读 1,489评论 0 21
  • Numpy的组成与功能 Numpy(Numeric Python)可以被理解为一个用python实现的科学计算包,...
    不做大哥好多年阅读 4,282评论 0 10