【Python数据分析】Numpy详细教程

Python入门之Numpy

Numpy属性

  • ndim: 维度,即确定最底层一个元素位置需要用到的索引个数
  • shape: 行数和列数
  • size: 元素个数
import numpy as np
a = np.array([[0,1,2], [3,4,5], [6,7,8]])
a.ndim   # 维度
2
a.shape  # 行数和列数
(3, 3)
a.size   # 元素个数
9

Numpy的创建

Example1 创建特定数组
a = np.array([[2,23,4],[3,34,5]])
print(a)
[[ 2 23  4]
 [ 3 34  5]]
Example2 创建全零数组
a = np.zeros((3,3))
print(a)
[[ 0.  0.  0.  0.  0.]]
Example3 创建全一数组
a = np.ones((3,3))
print(a)
[[ 1.  1.  1.]
 [ 1.  1.  1.]
 [ 1.  1.  1.]]
Example4 创建全空数组,其包含的值是无意义的(慎用)
a = np.empty((3,2))
print(a)
[[ 0.  0.]
 [ 0.  0.]
 [ 0.  0.]]
Example5 用 arange 创建连续数组
a = np.arange(10 , 20 ,2)
print(a)
[10 12 14 16 18]
Example6 用 reshape 改变数组的形状
a = np.arange(12).reshape((3, 4))
print(a)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
Example7 用 linspace 创建线段型数组
a = np.linspace(1, 10, 20) # 开始端为1,结束端为10,分割成20个数据
print(a)
[  1.           1.47368421   1.94736842   2.42105263   2.89473684
   3.36842105   3.84210526   4.31578947   4.78947368   5.26315789
   5.73684211   6.21052632   6.68421053   7.15789474   7.63157895
   8.10526316   8.57894737   9.05263158   9.52631579  10.        ]

Numpy的基础运算

矩阵针对元素的运算有加、减、乘、除、乘方,还有一些函数运算,例如求和(sum())、求最大值(max())、求余弦值(sin())等等。

a = np.arange(1,7).reshape((2,3))
print(a)
[[1 2 3]
 [4 5 6]]
b = np.arange(2,8).reshape((2,3))
print(b)
[[2 3 4]
 [5 6 7]]
b * a    # 加、减、乘、除类似
array([[ 2,  6, 12],
       [20, 30, 42]])
b + 2    # 加、减、乘、除类似
array([[4, 5, 6],
       [7, 8, 9]])
np.sum(a) # 求最大值、最小值类似
21
np.sin(a)  # 其他数学函数类似
array([[ 0.84147098,  0.90929743,  0.14112001],
       [-0.7568025 , -0.95892427, -0.2794155 ]])
print(a < 4)   # 针对每一个元素
[[ True  True  True]
 [False False False]]

矩阵乘法:

np.dot(a, b.reshape((3, 2)))    # (2 * 3) . (3 * 2)
array([[28, 34],
       [64, 79]])

最大元素和最小元素的索引:

np.argmin(b)
0
np.argmax(b)
5

均值与中位数:

mean = np.mean(b)
median = np.median(b)
print("均值:{0}   中位数:{1}".format(mean, median))
均值:4.5   中位数:4.5

累加运算与累差运算:

np.cumsum(b)
array([ 2,  5,  9, 14, 20, 27], dtype=int32)
np.diff(b)  # 每一行后一项与前一项的差
array([[1, 1],
       [1, 1]])

矩阵的转置:

np.transpose(b)
array([[2, 5],
       [3, 6],
       [4, 7]])
a.T
array([[1, 4],
       [2, 5],
       [3, 6]])

Numpy的输出

索引和切边与List类似,此处不做赘述。

按行输出与按列输出:

for row in b:
    print(row)
[2 3 4]
[5 6 7]
for column in b.T:
    print(column)
[2 5]
[3 6]
[4 7]

Numpy的合并

上下合并 np.vstack()

np.vstack((a,b))    # 接收一个元组做参数
array([[1, 2, 3],
       [4, 5, 6],
       [2, 3, 4],
       [5, 6, 7]])

左右合并 np.hstack()

np.hstack((a,b))
array([[1, 2, 3, 2, 3, 4],
       [4, 5, 6, 5, 6, 7]])

利用轴的概念直接合并 axis参数

np.concatenate((a,b), axis = 0)
array([[1, 2, 3],
       [4, 5, 6],
       [2, 3, 4],
       [5, 6, 7]])
np.concatenate((a,b), axis = 1)
array([[1, 2, 3, 2, 3, 4],
       [4, 5, 6, 5, 6, 7]])

Numpy的分割

纵向分割

仅能等分,中间的参数表示分成的array个数

A = np.arange(12).reshape(3,4)
np.split(A, 2, axis=1)
[array([[0, 1],
        [4, 5],
        [8, 9]]), array([[ 2,  3],
        [ 6,  7],
        [10, 11]])]

横向分割

np.split(A, 3, axis=0)
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

不等量分割

np.array_split(A, 3, axis=1)
[array([[0, 1],
        [4, 5],
        [8, 9]]), array([[ 2],
        [ 6],
        [10]]), array([[ 3],
        [ 7],
        [11]])]

Numpy的 = 与copy()

赋值具有关联性,copy()是一个新的拷贝

a
array([[1, 2, 3],
       [4, 5, 6]])
b = a    # 将a赋值给b
b
array([[1, 4, 3],
       [4, 5, 6]])
a[0][1] = 4  #修改a中一个元素
a
array([[1, 4, 3],
       [4, 5, 6]])
b  # b中对应元素也发生了改变
array([[1, 4, 3],
       [4, 5, 6]])

copy()的矩阵不会随之改变

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

推荐阅读更多精彩内容