第12周Python学习周记

&关于计划:

一、Numpy库的学习(学习完毕);

二、Matplotlib的学习(进行中,预计13周之内完成);

三、Markdown的学习(进行中);

(本文内容参考于简书教程)


&时间:第12周


&内容摘要:

一、

1.当我们对数组进行操作的时候,我们需要注意一个很重要的概念——复制和视图

(1)完全不复制:(一个数据域,一个数组对象,多个名字)

①简单的赋值不会创建数组对象或其数据的拷贝:

>>> import numpy as np

>>> a = np.arange(12)

>>> b = a                                #没有创建新的对象

>>> b is a                                    #a 和 b是同一数                                                    组对象的两个名字

True

>>> b.shape = 3,4                    #改变b的形状(同                                            时改变b的形状——因为a                                            和 b引用同一数组对象)

>>> a.shape

(3, 4)

                                        #(a和b完全相通)

②Python将引用对象作为引用传递,因此函数调用不会复制

>>> def g(x):

... print(id(x))

...

>>> id(a)

2339740615344

>>> g(a)                                    #同样的,a 和 x是                                            同一数组对象的两个名字

2339740615344

(2)视图或浅复制:(一个数据域,不同数组对象,共享相同数据域)

不同的数组对象可以共享相同的数据。

①view()方法创建一个新数组对象,该对象看到相同的数据。

>>> c = a.view()

>>> c is a                      #c不是a,是新的数组对象

False

>>> c.base is a

                          #c是以a的数据为基础建立的对象

True

>>> c.flags.owndata

False

>>> c.shape = 2,6      #!a的形状不会(随C改变)

>>> a.shape

(3, 4)

>>> a

array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

>>> c[0,4] = 1234

                                      #a的数据会随c改变(因为                                          它们共享数据)

>>> a

array([[ 0, 1, 2, 3],

[1234, 5, 6, 7],

[ 8, 9, 10, 11]])

                            #(a和c唯数据相通,形状独立)

Ps:一个易错点:

>>> e = d.view()

>>> e.base is d

True

>>> d.base is e

False

②对数组切片返回一个视图:

>>> s = a[:,1:3] #a[1:3]->取第一个和第二个元素;a[:,1:3]取第一和第二列元素

>>> s[:] = 10 #对s(作为a的视图)赋值,a随之改变(s和a共享数据)

>>> a

array([[ 0, 10, 10, 3],

[1234, 10, 10, 7],

[ 8, 10, 10, 11]])

(3)深复制:(数据和数据对象,完全复制到另一个名字下)

copy方法生成数组及其数据的完整拷贝

>>> d = a.copy()                                      #新对象d

>>> d is a              #d和a是两个独立无相关对象

False

>>> d.base is a                                  #数据不共享

False

>>> d

array([[ 0, 10, 10, 3],

[1234, 10, 10, 7],

[ 8, 10, 10, 11]])

>>> a

array([[ 0, 10, 10, 3],

[1234, 10, 10, 7],

[ 8, 10, 10, 11]])

>>> d[0,0] = 9999

>>> a

array([[ 0, 10, 10, 3],

[1234, 10, 10, 7],

[ 8, 10, 10, 11]])

>>> d

array([[9999, 10, 10, 3],

[1234, 10, 10, 7],

[ 8, 10, 10, 11]])

2.用imag方法操作数组的虚部

>>> a = np.array([1+2j, 3+4j, 5+6j]) #构造复数数组

>>> a.imag

array([ 2., 4., 6.]) #数组形式返回a的各元素虚部

>>> a.imag = np.array([8,10,12]) #数组形式对a的各元素虚部赋值

>>> a

array([ 1. +8.j, 3.+10.j, 5.+12.j])

3.花式索引和索引技巧

(1)使用索引数组索引

A.

>>> a = np.arange(12)**2

>>> a

array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121], dtype=int32)

>>> i = np.array([2,2,6,8,7]) #作为一个存储position的数组

>>> a[i]                            #把单子i拿过来按图索骥

array([ 4, 4, 36, 64, 49], dtype=int32)

>>> j = np.array([[3,4],[8,9]])

>>> a[j]

array([[ 9, 16],

[64, 81]], dtype=int32)

                                #对应position和data返回矩阵

B.多维度索引

>>> a = np.arange(12).reshape(3,4)

>>> a

array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

>>> i = np.array([[0,1],

... [1,2]])                                #构建索引位置矩阵

>>> a[i]                  #对应i的内容和形式返回矩阵

array([[[ 0, 1, 2, 3],                          #a的第0个元素

[ 4, 5, 6, 7]],                                      #a的第1个元素

[[ 4, 5, 6, 7],                                      #a的第1个元素

[ 8, 9, 10, 11]]])                                #a的第2个元素

>>> a[i,2] #a[i]索引返回的数组中,取每一个元素的2位置的数出来再构造一个数组

array([[ 2, 6],

[ 6, 10]])

>>> j = np.array([[2,1],

... [3,3]])

>>> a[i,j] #i的n位结合j的n位构成一个索引坐标,在a

中按图索骥!注意此处i和j的形状要一样

array([[ 2, 5],                #例如,(i[0],j[0])=(0,2),则                                              a[0,2]->2;接着a[1,1]->5,                                            以此类推

[ 7, 11]])

>>> a[:,j]

array([[[ 2, 1],

[ 3, 3]], #a的第一个元素的j数组对应位置

[[ 6, 5],

[ 7, 7]], #a的第二个元素的j数组对应位置

[[10, 9],

[11, 11]]]) #a的第三个元素的j数组对应位置

(2)使用布尔数组索引(可以非常方便地察看、选择数据)

>>> import numpy as np

>>> a = np.arange(12).reshape(3,4)

>>> b = a > 4

>>> b

array([[False, False, False, False],

[False, True, True, True],

[ True, True, True, True]], dtype=bool)

>>> a[b]

array([ 5, 6, 7, 8, 9, 10, 11])

>>> a

array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

>>> a[b] = 0

>>> a

array([[0, 1, 2, 3],

[4, 0, 0, 0],

[0, 0, 0, 0]])

4.好玩的ix_()函数(可以用于组合不同的向量,便于向量运算)

>>> import numpy as np

>>> a = np.array([2,3,4,5])

>>> b = np.array([8,5,4])

>>> c = np.array([5,4,6,8,3])

>>> ax,bx,cx = np.ix_(a,b,c) #用ix_()函数组合向量

>>> ax

array([[[2]],

[[3]],

[[4]],

[[5]]])

>>> bx

array([[[8],

[5],

[4]]])

>>> cx

array([[[5, 4, 6, 8, 3]]])

>>> ax.shape, bx.shape, cx.shape #组合完毕,向量各占一元

((4, 1, 1), (1, 3, 1), (1, 1, 5))

>>> result = ax+bx*cx

                                        #将完成组合的向量加以                                      运算,得到的结果矩阵存储                                      给数组对象

>>> result

array([[[42, 34, 50, 66, 26],

[27, 22, 32, 42, 17],

[22, 18, 26, 34, 14]],

[[43, 35, 51, 67, 27],

[28, 23, 33, 43, 18],

[23, 19, 27, 35, 15]],

[[44, 36, 52, 68, 28],

[29, 24, 34, 44, 19],

[24, 20, 28, 36, 16]],

[[45, 37, 53, 69, 29],

[30, 25, 35, 45, 20],

[25, 21, 29, 37, 17]]])

>>> result[3,2,4]

                                  #给予对应abc的参数,可以                                      从结果矩阵中调出结果

17

>>> a[3]+b[2]*c[4]        #跟普通方法结果一致

17

二、

1.使用默认配置画一个图:

A.代码:

图片发自简书App

B.效果:

图片发自简书App

2.改变线条的粗细和颜色以及设置图片边界:

代码和效果:

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

推荐阅读更多精彩内容

  • 一竿横架天下, 一线垂纶乾坤。 碧波清泉细柳风, 青山绿水不老翁。 邀一行挚友, 寻一处悠然。 钓得岁月闲, 钩住...
    冬蝉子阅读 299评论 2 1
  • 记忆中的过年,是从寒假开始的。 每当从学校背回来寒假作业,就开始一边疯狂做,一边扳着手指头数日子,...
    聆荷轩主阅读 369评论 1 0