NumPy 分割與搜索數組詳解

来源:https://www.cnblogs.com/xiaowange/p/18196801
-Advertisement-
Play Games

NumPy 分割數組 NumPy 提供了 np.array_split() 函數來分割數組,將一個數組拆分成多個較小的子數組。 基本用法 語法: np.array_split(array, indices_or_sections, axis=None) array: 要分割的 NumPy 數組。 i ...


NumPy 分割數組

NumPy 提供了 np.array_split() 函數來分割數組,將一個數組拆分成多個較小的子數組。

基本用法

語法:

np.array_split(array, indices_or_sections, axis=None)

array: 要分割的 NumPy 數組。
indices_or_sections: 指定分割位置的整數列表或要包含每個子數組的元素數量的列表。
axis: 可選參數,指定要分割的軸。預設為 0(即行分割)。

示例:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

# 將數組分割成 3 個子數組
new_arrays = np.array_split(arr, 3)
print(new_arrays)  # 輸出:
                        # [array([1, 2]), array([3, 4]), array([5, 6])]

# 指定分割位置
new_arrays = np.array_split(arr, [2, 5])
print(new_arrays)  # 輸出:
                        # [array([1, 2]), array([3, 4]), array([5, 6])]

# 沿列分割
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
new_arrays = np.array_split(arr, 3, axis=1)
print(new_arrays)  # 輸出:
                        # [array([[1, 4, 7]]), array([[2, 5, 8]]), array([[3, 6, 9]])]

註意事項

如果 indices_or_sections 指定的分割位置超出數組範圍,則會引發異常。
如果數組元素數量不足以滿足分割要求,則會從末尾進行調整。
np.array_split() 返回一個包含子數組的列表。

高級用法

除了基本用法之外,np.array_split() 還可以用於更複雜的分割操作:

使用掩碼進行分割: 您可以使用掩碼數組來指示哪些元素應該包含在每個子數組中。
不均勻分割: 您可以指定每個子數組包含的元素數量,即使數量不均等。
沿著任意軸分割: 您可以使用 axis 參數指定要分割的軸。

例如,以下代碼使用掩碼將數組分割成兩個子數組,第一個子數組包含所有偶數元素,第二個子數組包含所有奇數元素:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
mask = arr % 2 == 0
new_arrays = np.array_split(arr, mask)
print(new_arrays)  # 輸出:
                        # [array([2, 4, 6]), array([1, 3, 5])]

練習

使用 np.array_split() 將以下數組 arr 沿行分割成 4 個子數組,每個子數組包含相等數量的元素。

import numpy as np

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

在評論中分享您的代碼和輸出。

Sure, here is the requested Markdown formatted content:

NumPy 搜索數組

NumPy 提供了多種方法來搜索數組中的元素,並返回匹配項的索引。

基本用法:np.where()

語法:

np.where(condition)

condition:用於確定要查找的元素的布爾條件。

功能:

np.where() 逐個元素比較條件,並返回滿足條件的元素的索引。
它返回一個元組,其中包含一個或多個數組,每個數組表示滿足條件的元素的索引。

示例:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])

# 查找值為 4 的索引
indices = np.where(arr == 4)
print(indices)  # 輸出: (array([3, 5, 6]),)

# 查找大於 5 的元素的索引
indices = np.where(arr > 5)
print(indices)  # 輸出: (array([6, 7, 8]),)

搜索排序數組:np.searchsorted()

語法:

np.searchsorted(array, value, side='left')

array:已排序的 NumPy 數組。
value:要搜索的值。
side:可選參數,指定搜索方向。預設為 'left'(從左到右)。

功能:

np.searchsorted() 在排序數組中執行二進位搜索,並返回指定值應插入的位置以保持排序順序。
它假定輸入數組已排序。

示例:

import numpy as np

arr = np.array([1, 3, 5, 7, 9])

# 查找值 7 應插入的索引
index = np.searchsorted(arr, 7)
print(index)  # 輸出: 3

# 從右側查找值 2 應插入的索引
index = np.searchsorted(arr, 2, side='right')
print(index)  # 輸出: 1

練習

使用 np.where()np.searchsorted() 正確找到以下數組 arr 中所有等於 3 的元素的索引。

import numpy as np

arr = np.array([1, 2, 3, 4, 3, 3, 6, 7, 8])

在評論中分享您的代碼和輸出。

最後

為了方便其他設備和平臺的小伙伴觀看往期文章:

微信公眾號搜索:Let us Coding,關註後即可獲取最新文章推送

看完如果覺得有幫助,歡迎點贊、收藏、關註


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、錯誤類型 任何一個框架,對於錯誤的處理都是一種必備的能力 在Vue 中,則是定義了一套對應的錯誤處理規則給到使用者,且在源代碼級別,對部分必要的過程做了一定的錯誤處理。 主要的錯誤來源包括: 後端介面錯誤 代碼中本身邏輯錯誤 二、如何處理 後端介面錯誤 通過axios的interceptor實現 ...
  • 目錄VUE-局部使用快速入門常用指令v-forv-bindv-if & v-showv-onv-modelvue生命周期AxiosVue案例 VUE-局部使用 Vue 是一款用於構建用戶界面的漸進式的JavaScript框架。 (官方:https://cn.vuejs.org/) 快速入門 準備 準 ...
  • 前言 在上一篇 vue3早已具備拋棄虛擬DOM的能力了文章中講了對於動態節點,vue做的優化是將這些動態節點收集起來,然後當響應式變數修改後進行靶向更新。那麼vue對靜態節點有沒有做什麼優化呢?答案是:當然有,對於靜態節點會進行“靜態提升”。這篇文章我們來看看vue是如何進行靜態提升的。 什麼是靜態 ...
  • 一般我們在開發的時候,習慣上使用常規的關係型資料庫來設計資料庫表,對於一些業務表的欄位比較固定的場景,是一種非常不錯的選擇,而且查詢的時候,由於是基於固定的表欄位進行查詢,性能基本上是最優的。不過有一些場景下,業務信息的經常變化,使用常規的關係型資料庫來創建表欄位、刪除欄位的模式,肯定不是合適的處理... ...
  • 項目場景: 之前正式一直都是使用的手動註冊,而且測試環境還沒有註冊上去,但是最近開發的需要每天在測試上跑跑看,再上生產,所以這次要解決掉。 問題描述 我是測試環境和正式環境都在一臺機子上,兩個環境項目跑不同的docker容器,我要做的是這兩個容器裡面的項目都註冊到我的xxl服務上去。 而且之前情況是 ...
  • 1、先將字體複製到目錄:\vendor\mpdf\mpdf\ttfonts2、再修改文件\vendor\mpdf\mpdf\src\Config\FontVariables.php,對照已經添加的simsun,simkai,simhei,fangzhenweibei,fangzhenheiti等字體 ...
  • nginx 反向代理是什麼? nginx 反向代理是一種網路伺服器架構模式,它通過將客戶端的請求轉發到後端伺服器,來提供負載均衡、高可用性、安全性等功能。 在這種架構中,nginx 作為反向代理伺服器,接收來自客戶端的請求,並將請求轉發到後端伺服器上。 在反向代理架構中,客戶端不直接訪問後端伺服器, ...
  • 請註意以下繼承體系中各class的constructors寫法: 1 class CPoint 2 { 3 public: 4 CPoint(float x=0.0) 5 :_x(x){} 6 7 float x() {return _x;} 8 void x(float xval){_x=xval ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...