python numpy庫學習之陣列訪問

2021-10-09 03:39:02 字數 3191 閱讀 5773

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基礎...