8.16 第四課 Numpy入門
作業(yè):
作業(yè)1:
生成一個3行5列的數(shù)組,元素值從1到15排列
1. 取出其中的第1行,第3列元素
2. 取出其中的第2行到最后一行
3. 取出其中的第1行到第2行,第1列到最后一列
4. 取出其中的第0行和第2行,第三列
作業(yè)2:
給出一組學(xué)生姓名,和他們對應(yīng)的成績,存儲在下方數(shù)組中。請計算以下問題:
1. 找出不及格的學(xué)生姓名(提示:使用布爾型索引)
2. 找出最高分、最低分,平均分?jǐn)?shù)
3. 將數(shù)值成績轉(zhuǎn)化成字母成績,大于等于90分為A, 70-89分為B,小于70分為C
數(shù)據(jù)如下:
names = np.array(["Xiao Ming","Xiao Zhang","Xiao Gang","Xiao Hong","Xiao Pang","Xiao Wu","Xiao Dai",
"Xiao Qian","Xiao Fan","Xiao Wang"])
scores = np.array([ 91, 68, 84, 55, 95, 81, 67, 82, 86, 78])
作業(yè)答疑Q&A目錄:
1,如何讀取文件
2,代碼運行出錯:轉(zhuǎn)換數(shù)組
3,代碼理解:randon
4,代碼運行出錯:In[*]
5,代碼運行出錯:arr
6,如何讀取文件
7,如何讀取文件
8,代碼理解:%是否支持小數(shù)運算
9,代碼運行出錯:中英切換
10,代碼理解
11,如何讀取文件
12,如何讀取文件
13,代碼運行理解:遍歷
14,代碼理解:dtype
15,代碼運行理解:round
16,代碼運行理解
17,代碼運行出錯/死循環(huán)
18,代碼運行出錯
19,如何讀取文件
20,代碼運行出錯
Q 1 :請問,第四課的課件除pdf文件以外的兩個文件如何下載,之前老師講過,給忘了
A:https://github.com/DataLearningTeam/PythonData。里面有個綠色按鈕,clone and download。選擇其中的download zip即可下載,每次下載的內(nèi)容都是全部的。

Q 2 : 如上圖(圖4-1),我轉(zhuǎn)換了一個數(shù)組,為什么顯示出來的格式是‘0’呢?
A:第一行是不是打錯了,np.arry = np.array()
Q 3 :老師,書上92頁: ?data = randn(7,4) ?,這句輸入后執(zhí)行顯示randn沒有定義。這是還要用什么庫么?
A:書中有些代碼會省略包的導(dǎo)入,如這里省略from numpy.random import randn,沒有這句話的情況下,可以使用np.random.randn(7, 4)
Q 4 :老師In[ ]這里面變成“*”而不是序列數(shù)字了怎么辦??
A1:建議重啟一下kerenl,產(chǎn)生這個原因可能是在之前遇到過死循環(huán),或者因為些外界因素導(dǎo)致kernel環(huán)境停止。
A2:我Google到的解決方法是,點列表Kernel然后單擊Interrupt。,然后按Shift + Enter。
Q 5 :使用“arr”報錯。。。請問是什么原因
A:看下英文描述,試著到網(wǎng)上找下錯誤原因。
NameError: name "arr" is not defined
Q 6 :請問如果我自己要重復(fù)那個紅酒案例,如何讀取‘winequality-red.csv’這個文件?是把那個文件拷貝到自己的github里還是拷貝到本地某個文件夾?
A:拷貝到自己的本地文件夾。
追問Q:下載到本地一個文件夾,解壓,按視頻中的代碼執(zhí)行程序還是顯示winequality-red.csv not found,該怎么辦?
A:保存到和你要執(zhí)行的那個ipynb相同目錄下
Q 7 :請教老師,我想下載這個csv文件該如何下載。pdf文件點擊進去后有download鍵可以下載,但csv文件點進去沒有啊……
A:直接通過https://github.com/DataLearningTeam/PythonData的clone or download下載
追問Q:這樣好像下載的是全部文件?我只想下載這一個csv文件的話,該如何處理呢?
A:進入到每個文件中,然后找到raw,右鍵選擇"鏈接存儲為"

Q 8 :求公約數(shù)那題,如上圖(圖4-2),如何求帶小數(shù)的公約數(shù),是不是%根本就不支持小數(shù)運算
A:小數(shù)的公約數(shù)怎么定義,定義小數(shù)哪一位能被整除?而且小數(shù)是有精度問題,計算機表示的小數(shù)和真實的數(shù)字有差別。這點不用完全理解??梢园研?shù)轉(zhuǎn)為整數(shù),求公約數(shù),然后在轉(zhuǎn)化為小數(shù)。

Q 9 :請問上圖中(圖4-3)列表中的數(shù)值不支持漢字,是這樣吧?
A:支持的。第一行“1月”后面那個逗號是在漢字輸入法下的,是全角,改成半角就好了。


Q 10 :講解作業(yè)部分,有兩個問題,請老師幫忙回答下,多謝!
1. 沒懂這個關(guān)系(圖4-4),x[1:2] 可以理解為列表里的第2行[d,e,f],之后的[0]位應(yīng)該是 d 啊,然后又來個 [1]..不懂了,這個[0]沒有意義嗎?
2. k= max(n1, n2) 不是限制了k只能是n1與n2之間的那個最大數(shù)嗎?
A:第一問自己打一遍印象比較深刻,看看x[1:2]是什么x[1:2][1]又是什么。x【1:2】出來是1行三列的array。
第二問,是設(shè)定k從n1和n2中較大的那個數(shù)開始算起,這樣比較省時間,畢竟就算你從1開始,1-max(n1,n2)這個區(qū)間里的答案是錯誤的。在循環(huán)里,k被賦予新值

Q 11 :圖4-6,想把一個csv文件導(dǎo)入進行處理,因為我所有的數(shù)據(jù)都是通過excel表格。但在網(wǎng)上找了很多方法,都出現(xiàn)各種各樣的問題。下面這個能看懂一點。請老師能幫忙看看能不能用嗎?我的csv文件放在附件里。
A:對于numpy,csv文件可以使用genfromtxt方式。
后面介紹pandas,csv也有專門的方法讀取。
你介紹的這種方式需要導(dǎo)入csv包,也就是需執(zhí)行import csv
Q 12 :老師幫幫忙,給點提示也行。我一直讀取不了紅酒的文件。不知道是儲存位置錯了還是文件下錯了。一點思路都沒有啊。
A:把這個文件放到notebook同級目錄下。

Q 13 :最后一題的最后一問方法一不知道為什么沒有報錯(最后一張圖)?求解
A:你把scores遍歷了,每一個應(yīng)該是 i ,所以應(yīng)該是 if i >=90 : 我跟你的方法一樣,也犯過同樣的錯誤哈哈

Q 14 :上圖(圖4-8),為什么輸出的值的末尾出現(xiàn)dtype?
A:沒關(guān)系的 使用print就不會打印dtype了。U1表示numpy里面元素為字符串長度為1。
Q 15 :平均分怎么保留兩位小數(shù),使用round為什么沒有用呢
A:你沒貼round失敗的圖,我不確定我猜的對不對。試試round(a,2) a是要round操作的數(shù),2是保留2位小數(shù),必須要設(shè)置保留幾位小數(shù)
Q 16 :np.where(scores < 70, 'C', np.where(scores > 90, 'A', 'B'))雖然寫出來了,而且運行結(jié)果也對。但是對這個方法覺得不理解。
問題一:作為where函數(shù),后兩個參數(shù)應(yīng)該是類型一致的。第一層where的第二個參數(shù)是'C',那第三個參數(shù)應(yīng)該也是一個字符。但是np.where的返回值是一個array,這怎么可以作為一個參數(shù)傳入?
問題二:第二個參數(shù)的返回值是一個數(shù)組吧?為什么是一個字符串呢?
A1:問題一:并未規(guī)定后面的兩個參數(shù)一致。只是np數(shù)組要求類型一致。為了保證這一點,第二個參數(shù)雖本身不是字符串,但是它的計算結(jié)果是字符串。
問題二:這我也不太懂了,我也是從網(wǎng)上查到使用嵌套的,使用if else就很容易理解了,但也不是特別理解。
A2: 老師說了,其實第二三個參數(shù)都是數(shù)組,只是之前利用了廣播,自動擴展成了數(shù)組

Q 17 :大家能不能幫我看看(圖4-9),print 姓名那行,老說我格式不對……我定義了str???
還有個問題,出現(xiàn)死循環(huán)*,改完之后你們只用restart就好使嗎?我要用restart&run all才可以,可我記得老師上課說用restart就行的……
A1:restart ,然后運行你要用的那一行以及和它相關(guān)的,你的函數(shù)定義和運行函數(shù)命令在2個 in[ ] 里,restart相當(dāng)于內(nèi)存格式化,是不是只運行了運行函數(shù)那個 in[ ] 所以不起效果。
A2: print把加號改成逗號試試,或者你說把print換成return

Q 18 :圖4-10,請問我這錯在哪?
A:if冒號少了

Q 19 :請問要把紅酒案例那個文件儲存到哪里才可以像老師一樣打開?或者有別的方式打開嗎?
A:和你寫的python文件(.py)在同一目錄下,如圖4-11。不需要打開,python里讀取就好了。

Q 20 :如圖4-12,為什么會說 np沒有被定義呢?
A:有沒有import numpy as np?或者有沒有中途restart過?把import那個運行一遍再運行你現(xiàn)在出問題的那個,試試
第四課答疑Q&A結(jié)束啦!以上整理內(nèi)容來自新生大學(xué)解密大數(shù)據(jù)團隊的Python數(shù)據(jù)分析課程的作業(yè)區(qū)和討論區(qū),還有QQ群。若有錯誤之處,歡迎指正。