numpy數組切片全解析

一、numpy數組切片操作

numpy數組切片是指從原有的數組中截取出一個新的子數組,對子數組的修改不影響原數組。numpy通過冒號(:)來實現切片。切片的語法形式為:a[start:end:step]。其中start是切片的起始下標,end是切片的截止下標(不包含在切片內),step是切片的步長。如果不指定start,默認為0;如果不指定end,默認為數組的長度;如果不指定step,默認為1。

下面的例子演示了numpy數組的切片操作:

import numpy as np

# 創建numpy數組
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])

# 切片操作
print(arr[1:5])  # [2 3 4 5]
print(arr[:5])   # [1 2 3 4 5]
print(arr[5:])   # [6 7 8 9]
print(arr[::2])  # [1 3 5 7 9]

二、numpy數組指定列取

numpy可以通過冒號(:)來選擇數組的某些列進行操作。語法形式為:a[:,start:end:step]。其中冒號(:)表示所有的行,start、end、step與切片操作相同。

下面的例子演示了如何指定列對numpy數組進行操作:

import numpy as np

# 創建numpy數組
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 指定列取
print(arr[:, 1])         # [2 5 8]
print(arr[:, 1:3])       # [[2 3] [5 6] [8 9]]
print(arr[:, ::2])       # [[1 3] [4 6] [7 9]]

三、numpy數組切片賦值

numpy數組切片不僅僅是獲取數組的部分元素,還可以將新的值賦給這些元素,從而修改原有的數組。對於對子數組使用賦值操作,修改後的值會反映在原有的數組上。

下面的例子演示了如何通過numpy數組的切片操作,修改數組元素的值:

import numpy as np

# 創建numpy數組
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])

# 切片賦值操作
arr[1:5] = 0
print(arr)  # [1 0 0 0 0 6 7 8 9]

四、numpy數組、numpy數組切片與索引

numpy數組切片是指截取出一個新的數組,對新數組的操作不會影響原有的數組。而對於numpy數組切片後的數據,如果採用索引進行操作,修改後的值會反映在原數組上。

下面的例子演示了numpy數組、numpy數組切片與索引的關係:

import numpy as np

# 創建numpy數組
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
arr_slice = arr[1:5]

print(arr)         # [1 2 3 4 5 6 7 8 9]
print(arr_slice)   # [2 3 4 5]

# numpy數組切片後使用索引修改值
arr_slice[1] = 0
print(arr_slice)   # [2 0 4 5]
print(arr)         # [1 2 0 4 5 6 7 8 9]

五、numpy數組切片還是數組還是列表

numpy數組切片得到的是一個新的數組,而不是列表。即使原有的數組是列表,通過切片操作得到的依然是一個數組。

下面的例子演示了numpy數組切片得到的是一個數組:

import numpy as np

# 創建列表
lst = [1, 2, 3, 4, 5]

# 通過列表創建numpy數組
arr = np.array(lst)

# 切片操作
arr_slice = arr[1:3]
print(type(arr_slice))  # 

六、numpy數組切片返回數組的引用對嗎

numpy數組切片操作返回的是一個新的數組,而不是原有數組的引用。也就是說,對新的數組進行操作,不會影響到原有的數組。

下面的例子演示了numpy數組切片返回的是一個新的數組:

import numpy as np

# 創建numpy數組
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])

# 切片操作
arr_slice = arr[1:5]
print(arr_slice)  # [2 3 4 5]

# 修改切片
arr_slice[1] = 0
print(arr_slice)  # [2 0 4 5]

# 原數組沒有改變
print(arr)        # [1 2 3 4 5 6 7 8 9]

七、numpy數組排序

numpy中有許多排序算法可以對數組進行排序,其中最常用的算法是快排。

下面的例子演示了numpy數組的排序操作:

import numpy as np

# 創建numpy數組
arr = np.array([4, 2, 6, 8, 1, 5, 3, 7, 9])

# 排序操作
print(np.sort(arr))  # [1 2 3 4 5 6 7 8 9]

八、numpy二維數組切片

對於二維數組,numpy的切片操作除了在行方向上進行截取操作外,還可以在列方向上進行操作。同時,可以通過冒號(:)對行和列同時進行操作。

下面的例子演示了numpy二維數組的切片操作:

import numpy as np

# 創建numpy數組
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 二維數組切片
print(arr[1:3, 1:3])    # [[5 6] [8 9]]
print(arr[1:3, ::2])    # [[4 6] [7 9]]
print(arr[:, 1:3])      # [[2 3] [5 6] [8 9]]

九、python二維數組切片規則選取

在對二維數組進行切片操作時,可以在行方向和列方向上分別進行選擇。對於規則選取,程序員需要根據具體的需求進行選擇。

下面的例子演示了對python二維數組進行切片操作所需要的規則選取:

# 創建python二維數組
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# python二維數組切片操作
print(arr[1:])        # [[4, 5, 6], [7, 8, 9]]
print(arr[:2])        # [[1, 2, 3], [4, 5, 6]]
print(arr[:2, 1:])    # [[2, 3], [5, 6]]

結束語

本文詳細講解了numpy數組的切片操作,包括numpy數組切片操作、numpy數組指定列取、numpy數組切片賦值、numpy數組、numpy數組切片與索引、numpy數組切片還是數組還是列表、numpy數組切片返回數組的引用對嗎、numpy數組排序和numpy二維數組切片等。通過本文的學習,讀者可以熟練掌握numpy數組的切片操作,在numpy編程中可以更加得心應手。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/269920.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-16 13:34
下一篇 2024-12-16 13:34

相關推薦

  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python去掉數組的中括號

    在Python中,被中括號包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括號。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python二維數組對齊輸出

    本文將從多個方面詳細闡述Python二維數組對齊輸出的方法與技巧。 一、格式化輸出 Python中提供了格式化輸出的方法,可以對輸出的字符串進行格式化處理。 names = [‘A…

    編程 2025-04-29
  • Python切片索引越界是否會報錯

    解答:當對一個字符串、列表、元組進行切片時,如果索引越界會返回空序列,不會報錯。 一、切片索引的概念 切片是指對序列進行操作,從其中一段截取一個新序列。序列可以是字符串、列表、元組…

    編程 2025-04-29
  • Java創建一個有10萬個元素的數組

    本文將從以下方面對Java創建一個有10萬個元素的數組進行詳細闡述: 一、基本介紹 Java是一種面向對象的編程語言,其強大的數組功能可以支持創建大規模的多維數組以及各種複雜的數據…

    編程 2025-04-28
  • Python數組隨機分組用法介紹

    Python數組隨機分組是一個在數據分析與處理中常用的技術,它可以將一個大的數據集分成若干組,以便於進行處理和分析。本文將從多個方面對Python數組隨機分組進行詳細的闡述,包括使…

    編程 2025-04-28
  • Python數組索引位置用法介紹

    Python是一門多用途的編程語言,它有着非常強大的數據處理能力。數組是其中一個非常重要的數據類型之一。Python支持多種方式來操作數組的索引位置,我們可以從以下幾個方面對Pyt…

    編程 2025-04-28
  • Python矩陣轉置函數Numpy

    本文將介紹如何使用Python中的Numpy庫實現矩陣轉置。 一、Numpy庫簡介 在介紹矩陣轉置之前,我們需要了解一下Numpy庫。Numpy是Python語言的計算科學領域的基…

    編程 2025-04-28

發表回復

登錄後才能評論