import numpy as np
# 訪問陣列的元素,可以分為訪問某個具體位置,某一行、某一列、連續的幾個位置、不連續的幾個位置、滿足特定條件的位置(比如
# 陣列中所有的值大於a的元素、所有是虛數的元素、不是無窮大nan的元素等)
a0 = np.array([1
,4,2
,5,3
])print
(a0)
# b = a0[1:3] # 利用:切片獲取的新陣列是原始陣列的乙個檢視,也就是說b的起始位址和a0[1]相同,連續的幾個位置
# print(a0, '\n', b)
# print(id(b))
# print(a0)
# b[0] = 100
# print(a0, '\n', b)
# c = a0[1] # 利用下標索引就不是乙個檢視了,而是把資料複製到了乙個新記憶體位址存放著
# print(c)
# c = 10
# print(c)
# print(a0)
# d = a0[0:4:2] #冒號分隔切片引數 [start:stop:step] 來進行切片操作,不連續的幾個位置,但這幾個位置之間的步長一樣
# print(d)
# d[0] = 24
# print(a0)
# e = a0[1:] #提取1索引以後的所有元素,也只是原始陣列的乙個檢視,連續的幾個位置
# print(e)
# e[2] = 50
# print(e)
# print(a0)
# #通過slice函式來產生乙個索引陣列(好像不是陣列,型別是) 感覺這個不常用
# s = slice(0, 4, 2)
# print(type(s))
# t = a0[s]
# print(t)
# t[0] = 10 #可以看到這樣切片產生的也只是原始陣列的乙個檢視,不連續的幾個位置,但這幾個位置之間的步長一樣
# print(a0)
# f = a0[a0 > 3] #注意這樣索引得到陣列f不是原始陣列的乙個檢視了,而是單獨的開闢了乙個位址來存放資料
# print(a0 > 3)
# print(f)
# f[1] = 60
# print(f)
# print(a0)
# g = a0[[0, 2, 4]] #注意這樣用列表來索引得到陣列也不是原始陣列的乙個檢視了,而是單獨的開闢了乙個位址來存放資料 不連續的幾個元素
# print(g)
# g[0] = 20
# print(g)
# print(a0)
# p = [true, false, false, true, false]
# print(a0[p])
#總結:用列表來索引的都是講資料複製到乙個新記憶體(a0>3產生的也是乙個布林陣列),用:切片的都是原始陣列的乙個檢視
#二維陣列的情況
# a = np.array([[1, 2, 3], [3, 4, 5], [4, 5, 6]])
# print(a)
# a1 = a[1] #是原始陣列的乙個檢視,訪問第二行
# print(a1)
# a1[0] = 100
# print(a1)
# print(a)
#和一維陣列一樣,用列表來索引的都是將資料複製到乙個新記憶體,用切片的都是原始陣列的乙個檢視,後面我就不繼續切片改變值了
#下面就講講二維的訪問
# a2 = a[2][1] #訪問具體位置
# print(a2)
# a2_1 =a[2, 1]
# print(a2_1)
# a3 = a[1, :] #訪問某一行
# print(a3)
# a3_1 = a[1] #訪問某一行
# print(a3_1)
# a3_2 = a[1, ...] #訪問某一行
# print(a3_2)
# a3_2[0] = 50
# print(a3_2)
# print(a)
# a4 = a[:, 1] #訪問某一列
# print(a4)
# a4_1 = a[..., 1] #訪問某一列
# print(a4_1)
# a5 = a[1:] #訪問從某行開始剩下的所有行
# print(a5)
# a5_1 = a[0:3:2] #訪問不連續的幾行
# print(a5_1)
# a5_2 = a[0:2] #訪問連續的幾行
# print(a5_2)
# a6 = a[:, 1:2] #訪問連續的幾列
# print(a6)
# a6_1 = a[:, 0:3:2]
# print(a6_1)
#訪問沒有規則的不連續的幾行或者幾列,用列表來索引 ,將資料複製到乙個新記憶體
# a7 = a[[0, 2]]
# print(a7)
# a7[1] = 100
# print(a7)
# print(a)
# a8 = a[:, [0, 1]]
# print(a8)
# a8[1,0]=120
# print(a8)
# print(a)
#訪問多個特定位置,用兩個列表,比如說我要得到(0,2),(1,0),(2,1),(2,2)
# a9 = a[[0, 1, 2, 2], [2, 0, 1, 2]]
# print(a9)
# a10 = a[0:2, 1:3] #從原始陣列獲取乙個小的陣列,相當於從大矩形中扣乙個小矩形
# print(a10)
# c = a[[1, 2]] #使用列表作為下標得到的陣列不和原始資料共享資料
# #等價於c = a[[1, 2],:]
# print(c)
# c[0] = 200
# print(c)
# print(a)
a0[[1,
2,3]
]=200,
300,
400print
(a0)
python numpy庫學習之陣列訪問
Python NumPy學習筆記之矩陣
建立numpy矩陣 a np.mat 1 2 3 4 5 6 7 8 9 b np.matrix 1,2,3 4,5,6 7,8,9 print a,n b 小矩陣合成大矩陣 a np.diag 1,2,3 b np.eye 3 c np.bmat a b 橫向合成矩陣 d np.bmat a b ...
Python Numpy之linspace用法說明
linspace生成有序列表,重點在資料範圍與資料個數上 linspace 0,1,11 即從0到1閉區間,劃分為11個資料點 import numpy as np a np.linspace 0,1 a array 0.0.11111111,0.www.cppcns.com22222222,0.3...
python numpy學習筆記
前言 關於學習python,這幾年斷斷續續,學了停,停了學。我查過一些帖子,有人說直接做專案,在專案中學習 有人說打好基礎。我的性格可能是為了工作而工作,做專案可能會只對結果關心,當能出結果時,我便不會探索其中的知識點。所以,我準備從基礎開始,利用官網進行理論的學習,這篇文章是為了對python基礎...