欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中數(shù)組切片的用法實例詳解

 更新時間:2022年12月20日 09:22:55   作者:Yale曼陀羅  
python的數(shù)組切片操作很強大,但有些細節(jié)老是忘,故寫一點東西記錄下來,下面這篇文章主要給大家介紹了關(guān)于Python中數(shù)組切片用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

一、python中“::-1”代表什么?

在Python中::-1表示將字符或數(shù)字倒序輸出(也稱【反轉(zhuǎn)】)。

舉個栗子,當(dāng)line = "abcde"時,使用語句line[::-1],最后的運行結(jié)果為:‘edcba’。

二、python中“:”的用法

在Python中a[i:j]表示復(fù)制字符串或數(shù)字從a[i]到a[j-1](也稱【切片】)。 當(dāng)切片中,ij 的位置被“:”替換時,切片結(jié)果如下:

  • 當(dāng)i缺省時,默認為i=0,即 a[:3]相當(dāng)于 a[0:3];
  • 當(dāng)j缺省時,默認為j=len(a), 即a[1:]相當(dāng)于a[1:10];
  • 當(dāng)i,j都缺省時,a[::]就相當(dāng)于完整復(fù)制一份a。

備注:上例中,假設(shè) a = [0,1,2,3,4,5,6,7,8,9]。

參考:python中::-1代表什么?

在Python中::-1表示將字符或數(shù)字倒序輸出。舉個栗子,當(dāng)line = "abcde"時,使用語句line[::-1],最后的運行結(jié)果為:'edcba'。下面請看詳細解釋。

一、反轉(zhuǎn)

::-1涉及到將數(shù)字或字符倒序輸出

二、詳解

1、i:j

a = [0,1,2,3,4,5,6,7,8,9]
b = a[i:j] 表示復(fù)制a[i]到a[j-1],以生成新的list對象
b = a[1:3] 那么,b的內(nèi)容是 [1,2]
當(dāng)i缺省時,默認為0,即 a[:3]相當(dāng)于 a[0:3]
當(dāng)j缺省時,默認為len(alist), 即a[1:]相當(dāng)于a[1:10]
當(dāng)i,j都缺省時,a[:]就相當(dāng)于完整復(fù)制一份a了

舉個栗子:

line = "abcde"
line[:-1]
結(jié)果為:'abcd'

2、::-1

b = a[i:j:s]這種格式呢,i,j與上面的一樣,但s表示步進,缺省為1.
所以a[i:j:1]相當(dāng)于a[i:j]
當(dāng)s<0時,i缺省時,默認為-1. j缺省時,默認為-len(a)-1
所以a[::-1]相當(dāng)于 a[-1:-len(a)-1:-1],也就是從最后一個元素到第一個元素復(fù)制一遍。所以你看到一個倒序的東東。

舉個栗子:

line = "abcde"
line[::-1]
結(jié)果為:'edcba'
line[:-1]其實就是去除了這行文本的最后一個字符(換行符)后剩下的部分。

實際上問題不難,你自己動手運行一下就會非常清楚。

三、python中數(shù)組切片

1、NumPy 數(shù)組正切片的規(guī)則:

python 中【切片】的意思是將元素從一個給定的索引帶到另一個給定的索引。

  • 我們像這樣傳遞切片而不是索引:[start:end]。
  • 我們還可以定義步長,如下所示:[start:end:step]。

備注:

如果我們不傳遞 start,則將其視為 0。如果我們不傳遞 end,則視為該維度內(nèi)數(shù)組的長度。如果我們不傳遞 step,則視為 1。

numpy中一維數(shù)組切片:

a=np.array([1,2,3,4,5])
print(a)
>>>
array([1, 2, 3, 4, 5])
# 切片
print(a[0])#查詢
>>>
1
print(a[1:3])#切片
>>>
[2 3]

numpy中二維數(shù)組切片:

a = np.array([
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12]
])
print(a[0,3])#第一行,第四列
>>>
4
print(a[:,3])#第四列
>>>
[ 4  8 12]
print(a[0,:])#第一行
>>>
[1 2 3 4]

"""
對數(shù)組使用均值函數(shù)mean()
"""
print(a.mean(axis=1))#計算同一列下,每一行各數(shù)字的平均值
>>>
[ 2.5  6.5 10.5]

print(a.mean(axis=0))#計算同一行下,每一列各數(shù)字的平均值
>>>
[5. 6. 7. 8.]

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[1:5]) # 裁切索引 1 到索引 5(不包括)的元素
>>>
[2 3 4 5]
print(arr[4:]) # 裁切數(shù)組中索引 4 到結(jié)尾的
>>>
[5 6 7]
print(arr[:4]) # 裁切從開頭到索引 4(不包括)的元素
>>>
[1 2 3 4]

2、NumPy 數(shù)組的負切片的規(guī)則:

使用減號運算符從末尾開始引用索引:[-start:-end]。

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# 從末尾開始的索引 3 到末尾開始的索引 1,對數(shù)組進行切片:
print(arr[-3:-1])
>>>
[5 6]

3、NumPy 數(shù)組的使用【STEP步長】切片的規(guī)則:

使用 step 值確定切片的步長:[start: end: step]。

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[1:5:2]) # 從索引 1 到索引 5,返回相隔的元素
>>>
[2 4]
print(arr[::2])# 返回數(shù)組中相隔的元素
>>>
[1 3 5 7]

3、NumPy 數(shù)組中 2-D 數(shù)組的切片規(guī)則:

從第二個元素開始,對從索引 1 到索引 4(不包括)的元素進行切片。 結(jié)果的示例如下:

import numpy as np
arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(arr[1, 1:4]) # 從第二個元素開始,對從索引 1 到索引 4(不包括)的元素進行切片
>>>
[7 8 9]

NumPy 比一般的 Python 序列提供更多的索引方式。除了之前看到的用整數(shù)和切片的索引外,數(shù)組可以由整數(shù)數(shù)組索引、布爾索引及花式索引。

三、numpy中的整數(shù)數(shù)組索引

numpy中的整數(shù)數(shù)組索引的切片規(guī)則:

以下實例獲取數(shù)組中(0,0),(1,1)和(2,0)位置處的元素。

import numpy as np
x = np.array([[1,2],[3,4],[5,5]])
y = x[[0,1,2],[0,1,0]]
print(y)
>>>
[1 4 5]

x = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
x
>>>
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])

# 切片模式一:輸出結(jié)果寫入單列表
rows = np.array([0,3,0,3])
cols = np.array([0,0,2,2])
y = x[rows,cols]
print(y)
>>>
[ 0  9  2 11]
# 切片模式二:輸出結(jié)果寫入二維數(shù)組
rows = np.array([[0,0],[3,3]])
cols = np.array([[0,2],[0,2]])
y = x[rows,cols]
print(y)
>>>
[[ 0  2]
 [ 9 11]]
# 切片模式二:輸出結(jié)果寫入2*3的數(shù)組
rows = np.array([[0,0,1],[3,2,3]])
cols = np.array([[0,2,1],[0,1,2]])
y = x[rows,cols]
print(y)
>>>
array([[0, 2, 1],
       [0, 1, 2]])

四、numpy中借助【切片 : 或 …與索引數(shù)組】組合進行復(fù)雜切片

借助切片 : 或 … 與索引數(shù)組組合。如下面實例:

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
a
>>>
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
b = a[1:3,1:3]
b
>>>
array([[5, 6],
       [8, 9]])

c = a[1:3,[1,2]]
c
>>>
array([[5, 6],
       [8, 9]])
d = a[...,1:]   #  arr[..., 1] 等價于 arr[:, :, 1]
d
>>>
array([[2, 3],
       [5, 6],
       [8, 9]])

五、布爾索引

我們可以通過一個布爾數(shù)組來索引目標(biāo)數(shù)組。

布爾索引通過布爾運算(如:比較運算符)來獲取符合指定條件的元素的數(shù)組。

一、以下實例獲取大于 5 的元素:
import numpy as np
x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])
print (x)
>>> 
[[ 0 1 2]
 [ 3 4 5]
 [ 6 7 8]
 [ 9 10 11]]
print (x[x > 5]) # 現(xiàn)在我們會打印出大于 5 的元素
>>>
[ 6 7 8 9 10 11]

二、以下實例使用了 ~(取補運算符)來過濾 NaN。
import numpy as np
a = np.array([np.nan, 1,2,np.nan,3,4,5]) 
print (a[~np.isnan(a)])
>>> 
[ 1. 2. 3. 4. 5.]
三、以下實例演示如何從數(shù)組中過濾掉非復(fù)數(shù)元素。
import numpy as np
a = np.array([1, 2+6j, 5, 3.5+5j]) 
print (a[np.iscomplex(a)])
>>> 
[2.0+6.j 3.5+5.j]

六、花式索引

花式索引指的是利用整數(shù)數(shù)組進行索引。

花式索引根據(jù)索引數(shù)組的值作為目標(biāo)數(shù)組的某個軸的下標(biāo)來取值。

  1. 對于使用一維整型數(shù)組作為索引,如果目標(biāo)是一維數(shù)組,那么索引的結(jié)果就是對應(yīng)位置的元素;
  2. 如果目標(biāo)是二維數(shù)組,那么就是對應(yīng)下標(biāo)的行。
import numpy as np
x=np.arange(32).reshape((8,4))
print (x[[4,2,1,7]]) # 傳入順序索引數(shù)組

>>> 
[[16 17 18 19]
 [ 8 9 10 11]
 [ 4 5 6 7]
 [28 29 30 31]]
print (x[[-4,-2,-1,-7]]) # 傳入倒序索引數(shù)組
>>> 
[[16 17 18 19]
 [24 25 26 27]
 [28 29 30 31]
 [ 4 5 6 7]]
print (x[np.ix_([1,5,7,2],[0,3,1,2])]) # 傳入多個索引數(shù)組(要使用np.ix_)
>>> 
[[ 4 7 5 6]
 [20 23 21 22]
 [28 31 29 30]
 [ 8 11 9 10]]

原理:

np.ix_函數(shù)就是輸入兩個數(shù)組,產(chǎn)生笛卡爾積的映射關(guān)系

舉個例子:

將輸入數(shù)組[1,5,7,2]和數(shù)組[0,3,1,2]產(chǎn)生笛卡爾積,就是得到(1,0),(1,3),(1,1),(1,2);(5,0),(5,3),(5,1),(5,2);(7,0),(7,3),(7,1),(7,2);(2,0),(2,3),(2,1),(2,2);
就是按照坐標(biāo)(1,0),(1,3),(1,1),(1,2)取得 x所對應(yīng)的元素4,7,5,6,(5,0),(5,3),(5,1),(5,2)取得 x 所對應(yīng)的元素20,23,21,22…以此類推。

import numpy as np 
x=np.arange(32).reshape((8,4))
print (x[np.ix_([1,5,7,2],[0,3,1,2])])
>>>
[[ 4  7  5  6]
 [20 23 21 22]
 [28 31 29 30]
 [ 8 11  9 10]]

總結(jié)

到此這篇關(guān)于Python中數(shù)組切片的用法詳解的文章就介紹到這了,更多相關(guān)Python數(shù)組切片用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python解包中*和**的最全用法

    Python解包中*和**的最全用法

    本文主要介紹了Python解包中*和**的最全用法,它們具有多種用途,包括解包參數(shù)、擴展序列、字典和集合操作等,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • PyQt+socket實現(xiàn)遠程操作服務(wù)器的方法示例

    PyQt+socket實現(xiàn)遠程操作服務(wù)器的方法示例

    這篇文章主要介紹了PyQt+socket實現(xiàn)遠程操作服務(wù)器的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python3中使用PyMongo的方法詳解

    Python3中使用PyMongo的方法詳解

    平常在處理數(shù)據(jù)的時候,必不可少地要使用數(shù)據(jù)庫存取數(shù)據(jù),出于一些原因,個人非常喜歡MongoDB這個數(shù)據(jù)庫。下面這篇文章主要給大家介紹了Python3中使用PyMongo的方法示例,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • 20個Python中正則表達式的應(yīng)用與技巧小結(jié)

    20個Python中正則表達式的應(yīng)用與技巧小結(jié)

    正則表達式是一種用來匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,本文我們將探討?Python?中?re?模塊的應(yīng)用和一些技巧,希望可以幫助您更好地理解和利用正則表達式
    2024-04-04
  • Python jieba 中文分詞與詞頻統(tǒng)計的操作

    Python jieba 中文分詞與詞頻統(tǒng)計的操作

    這篇文章主要介紹了Python jieba 中文分詞與詞頻統(tǒng)計的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python netmiko模塊的使用

    Python netmiko模塊的使用

    這篇文章主要介紹了Python netmiko模塊的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Python中match的具體使用

    Python中match的具體使用

    在Python 3.10中引入了一個match語句,其類似于其他語言(eg:C,JAVA)中的switch或case語句,本文就來介紹一下Python中match的具體使用,感興趣的可以了解一下
    2023-11-11
  • 通過python調(diào)用adb命令對App進行性能測試方式

    通過python調(diào)用adb命令對App進行性能測試方式

    這篇文章主要介紹了通過python調(diào)用adb命令對App進行性能測試方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python連接DB2數(shù)據(jù)庫

    Python連接DB2數(shù)據(jù)庫

    DB2 是美國IBM公司開發(fā)的一套關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它主要的運行環(huán)境為UNIX(包括IBM自家的AIX)、Linux、IBM i(舊稱OS/400)、z/OS,以及Windows服務(wù)器版本。今天我們來探討下如何使用Python連接DB2數(shù)據(jù)庫
    2016-08-08
  • Python中關(guān)于matplotlib圖片的灰度處理方式

    Python中關(guān)于matplotlib圖片的灰度處理方式

    這篇文章主要介紹了Python中關(guān)于matplotlib圖片的灰度處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論