Python中X[:,0]和X[:,1]的用法
X[:,0]是numpy中數組的一種寫法,表示對一個二維數組,取該二維數組第一維中的所有數據,第二維中取第0個數據,直觀來說,X[:,0]就是取所有行的第0個數據, X[:,1] 就是取所有行的第1個數據。
舉例說明:
import numpy as np X = np.array([[0,1],[2,3],[4,5],[6,7],[8,9],[10,11],[12,13],[14,15],[16,17],[18,19]]) print X[:,0]
X[:,0]輸出結果是:
import numpy as np X = np.array([[0,1],[2,3],[4,5],[6,7],[8,9],[10,11],[12,13],[14,15],[16,17],[18,19]]) print X[:,1]
X[:,1]輸出結果是:
X[n,:]是取第1維中下標為n的元素的所有值。
X[1,:]即取第一維中下標為1的元素的所有值,輸出結果:
X[:, m:n],即取所有數據的第m到n-1列數據,含左不含右
例:輸出X數組中所有行第1到2列數據
X = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11],[12,13,14],[15,16,17],[18,19,20]]) print X[:,1:3]
輸出結果:
補充:python中的[1:]、[::-1]、X[:,m:n]和X[1,:]
Python中的[1:]
意思是去掉列表中第一個元素(下標為0),去後面的元素進行操作,以一個示例題為例,用在遍歷中統計個數:
題:讀入N名學生的成績,將獲得某一給定分數的學生人數輸出。
輸入格式:
輸入在第1行給出不超過10^5^的正整數N,即學生總人數。隨後1行給出N名學生的百分制整數成績,中間以空格分隔。最後1行給出要查詢的分數個數K(不超過N的正整數),隨後是K個分數,中間以空格分隔。
輸出格式:
在一行中按查詢順序給出得分等於指定分數的學生人數,中間以空格分隔,但行末不得有多餘空格。
stu_num = input('請輸入學生總人數:') stu_grade = input('請輸入每位學生的成績(百分制),並以空格分開:').split() # 將如數的字符串轉化成列表 num_and_grade = input('請輸入要統計幾個分數,以及每個分數值,以空格分開:').split() # 轉成列表格式 result = [] # 定義一個新列表保存結果 for i in num_and_grade[1:]: # 定義變量i,遍歷num_and_grade[]列表中除瞭第一個元素的其他元素 result.append(str(stu_grade.count(i))) # 利用Python的count()函數統計相應i值在列表stu_grade[]列表中的個數,轉換成字符串格式並追加到result[]列表中 print(" ".join(result)) # 列表轉換成字符串格式,打印結果
結果:
請輸入學生總人數:10
請輸入每位學生的成績(百分制),並以空格分開:88 99 75 88 95 42 78 88 95 99
請輸入要統計幾個分數,以及每個分數值,以空格分開:3 88 99 95
3 2 2
Python中的[::-1]
這個是python的slice notation的特殊用法。
b = a[i:j] 表示復制a[i]到a[j-1],以生成新的list對象
當i缺省時,默認為0,即 a[:3]相當於 a[0:3]
當j缺省時,默認為len(alist), 即a[1:]相當於a[1:10]
當i,j都缺省時,a[:]就相當於完整復制一份a瞭
b = a[i:j:s]這種格式呢,i,j與上面的一樣,但s表示步進,缺省為1.
所以a[i:j:1]相當於a[i:j]
當s<0時:i缺省時,默認為-1; j缺省時,默認為-len(a)-1
所以a[::-1]相當於 a[-1:-len(a)-1:-1],也就是從最後一個元素到第一個元素復制一遍。
a = ['a','b','c','d','e','f','g','h','g','k','l','m'] b = a[:] # 列表切片,表示把列表a[]的值全部正序復制到列表b[]中 print(b) # ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'g', 'k', 'l', 'm'] # b = a[n:m]表示列表切片,復制列表a[n]到a[m-1]的內容到新的列表對象b[] # 當n缺省時,默認為0,即a[:m] # 當m缺省時,默認到最後,即a[n:] b1 = a[1:4] print(b1) # ['b', 'c', 'd'] b2 = a[:3] print(b2) # ['a', 'b', 'c'] b3 = a[1:] print(b3) # ['b', 'c', 'd', 'e', 'f', 'g', 'h', 'g', 'k', 'l', 'm'] # b = a[i:j:s]這種格式呢,i,j與上面的一樣,但s表示步進,缺省為1,s可以取任何數字. # 所以a[i:j:1]相當於a[i:j] b4 = a[1:5:2] print(b4) # ['b', 'd'] b5 = a[:5:-1] # 從末尾倒數取值 print(b5) # ['m', 'l', 'k', 'g', 'h', 'g'] b6 = a[5::-2] print(b6) # 從a[n]處倒數取值 b7 = a[::-1] # 到這取值 print(b7) # ['m', 'l', 'k', 'g', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']
輸出結果:
[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘g’, ‘k’, ‘l’, ‘m’]
[‘b’, ‘c’, ‘d’]
[‘a’, ‘b’, ‘c’]
[‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘g’, ‘k’, ‘l’, ‘m’]
[‘b’, ‘d’]
[‘m’, ‘l’, ‘k’, ‘g’, ‘h’, ‘g’]
[‘f’, ‘d’, ‘b’]
[‘m’, ‘l’, ‘k’, ‘g’, ‘h’, ‘g’, ‘f’, ‘e’, ‘d’, ‘c’, ‘b’, ‘a’]
Python中的X[:,m:n]和X[1,:]
X[:,0]是numpy中數組的一種寫法,表示對一個二維數組,取該二維數組第一維中的所有數據,第二維中取第0個數據,直觀來說,X[:,0]就是取所有行的第0個數據, X[:,1] 就是取所有行的第1個數據。
X[n,:]是取第1維中下標為n的元素的所有值。
X[:, m:n],即取所有數據的第m到n-1列數據,含左不含右
import numpy as np X = np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11],[12,13,14,15]]) # 定義二維數組 print(X[:,0]) # 取數組X二維數組中每一個的0號下標對應的值 [0 4 8 12] print(X[1,:]) # 取數組X一維數組中的第一組全部數值 [0 1 2 3] print(X[:,1:3]) #取所有數據的第1列到3-1列數據,從第0列開始計算,結果如下: ''' [[1 2] [5 6] [9 10] [13 14]] '''
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- Python 如何解決稀疏矩陣運算
- Python NumPy教程之索引詳解
- 5種Python統計次數方法技巧
- python中數組array和列表list的基本用法及區別解析
- Python Numpy教程之排序,搜索和計數詳解