NumPy基础使用

(一)、NumPy

(1)、介绍与安装

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算

直接安装: pip install numpy,我这里的版本是1.19.1。

Installing collected packages: numpy

Successfully installed numpy-1.19.1

(2)、基础使用

引入NumPy:

import numpy as np

创建数组:

# 1维数组
a = np.array([1, 2, 3, 4])
print("1维数组:", a)
# 2维数组
b = np.array([[1, 2], [3, 4]])
print("2维数组:", b)

# 指定数组维度,ndmin = 3是3维数组。
c = np.array([[1, 2], [3, 4]], ndmin=3)
print("指定数组维度:", c)

# 指定数组数值类型,complex复数类型。
d = np.array([[1, 2], [3, 4]], dtype=complex)
print("指定数组数值类型", d)

输出结果:
1维数组: [1 2 3 4]
2维数组: [[1 2] [3 4]]
指定数组维度: [[[1 2] [3 4]]]
指定数组数值类型 [[1.+0.j 2.+0.j] [3.+0.j 4.+0.j]]

(3)、向量的运算

我们不能发现,数组其实可以看做向量,我们可以利用数组来进行向量的运算。我们这里重点不在数学上,如果数学知识不足,还请自行查阅资源。

向量是将几何问题转化为代数问题的桥梁,向量的加减则是用代数方法进行几何运算。

坐标系解向量加减法 :

在直角坐标系里面,定义原点为向量的起点。两个向量和与差的坐标分别等于这两个向量相应坐标的和与差若向量的表示为(x,y)形式:

A(X1,Y1) B(X2,Y2),则A + B=(X1+X2,Y1+Y2),A - B=(X1-X2,Y1-Y2)

简单地讲:向量的加减就是向量对应分量的加减,类似于物理的正交分解。

三角形定则解决向量加法的方法:将各个向量依次首尾顺次相接,结果为第一个向量的起点指向最后一个向量的终点。

数乘向量(scalar multiplication of vectors)

数乘是与一个实数和一个向量有关的一种向量运算,即数量与向量的乘法运算。

A(X1,Y1) B(X2,Y2),则A x B =(X1X2,Y1Y2)

import numpy as np    
# 构建向量 
a = np.array([-1, 2])  
b = np.array([3, 1])    
# 加法  a_b = a + b 
# 数乘  
a2 = a * 2  
b3 = b * 3  
axb = a * b
print(a_b, a2, b3, axb)

结果:[2 3] [-2 4] [9 3] [-3 2]

点积:

点积有两种定义方式:代数方式和几何方式。通过在欧氏空间中引入笛卡尔坐标系,向量之间的点积既可以由向量坐标的代数运算得出,也可以通过引入两个向量的长度和角度等几何概念来求解。

广义定义

在一个向量空间V中,定义在VxV上的正定对称双线性形式函数即是V的数量积,而添加有一个数量积的向量空间即是内积空间。

代数定义

设二维空间内有两个向量a和b,定义它们的数量积(又叫内积、点积)为以下实数:


几何定义

设二维空间内有两个向量a和b,|a|和|b|表示向量a和b的大小,它们的夹角为,则内积定义为以下实数:


这里出现了向量的模的计算:

空间向量(x,y,z),其中x,y,z分别是三轴上的坐标,模长是:


平面向量(x,y),模长是:


对于向量X属于n维复向量空间:


import numpy as np

# 构建向量
a = np.array([-2, 2])
b = np.array([2, 2])

# 计算点积
ab_1 = np.inner(a, b)
# 根据夹角来计算点积,向量的夹角为45度。
ab_2 = np.linalg.norm(a) * np.linalg.norm(b) * np.cos(np.pi / 2)

print(ab_1,ab_2)

输出结果:0 4.898587196589414e-16

这两种方法计算结果不同,是由于np.pi/2是π/2的近似值,所以结果也是个超级接近于零的结果。其中np.linalg.norm(求范数)是用来求解范数的,这个暂时理解为求解向量的模数。

上述程序我们利用了:两个向量的点积的几何意义是他们的模乘以他们夹角的余弦。

我们也就得出了余弦定理:

也是 |C|2 = |a|2+|b|2 - 2|a||b|cos θ
我们可以求得两个向量的夹角:

import numpy as np

# 构建向量
a = np.array([-2, 2])
b = np.array([2, 2])

c2 = np.inner(a, b)
# 得到COS的数值
cos_num = c2 / (np.linalg.norm(a) * np.linalg.norm(b))
# 得到弧度
angle_cos_radian = np.arccos(cos_num)
# 弧度转换成角度
angle_cos = angle_cos_radian / np.pi * 180
print("夹角:", angle_cos)

输出结果:夹角: 90.0

(4)、定义数组的其他方式和常用函数

a = np.arange(5)

Out:[0 1 2 3 4]

b = np.arange(1, 30, 2)

Out:[ 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29]

print(b[2:5])

Out:[5 7 9]

b[2:5] = 0  
print(b)

Out:[ 1 3 0 0 0 11 13 15 17 19 21 23 25 27 29]

# 重塑数组b,变成3行5列的二维数组  
c = np.reshape(b, (3, 5))
print(c)

Out:

[[ 1 3 0 0 0]

[11 13 15 17 19]

[21 23 25 27 29]]

print(c[[1, 2]])

Out:

[[11 13 15 17 19]

[21 23 25 27 29]]

**开方的处理:**
d = np.array([1, 4, 9, 16])  
e = np.sqrt(d)
print(e)

Out:[1. 2. 3. 4.]

**均匀生成数组:**
f = np.linspace(0, 20, 6)  
print(f)

Out:[ 0. 4. 8. 12. 16. 20.]

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