asarray詳細解析

一、asarray和array的區別

asarray和array都是用於創建數組的函數,但它們之間還存在一些細微的差別。

首先,array可以接受任何序列對象,包括元組、列表等,而asarray則可以接受任何可迭代對象。其次,array會創造一個新的數組對象,而asarray則會儘可能地返回輸入數組的視圖(即,只會將數據轉化為數組的形式,而不會開闢新的內存空間)。這意味着,如果原數組是內存不可修改的,asarray返回的數組也會是內存不可修改的。最後,當array處理無法轉換為數組的對象時,會拋出異常,而asarray則會嘗試將輸入對象轉換成數組形式。

import numpy as np

a = [1, 2, 3]
arr1 = np.array(a)
arr2 = np.asarray(a)

print(arr1)
print(arr2)

a[0] = 5

print(arr1)
print(arr2)

運行結果:

[1 2 3]
[1 2 3]
[1 2 3]
[5 2 3]

從運行結果可以看出來,array創建的數組和原數組不同,asarray創建的數組和原數組相同,並且當原數組變化時,asarray創建的數組也會隨之變化。

二、asarray與vb的聯繫

asarray函數的概念和VB語言中的CVar()函數類似,函數用於將不同的變量類型轉換成數組,進而進行數值運算操作。asarray函數可以將一個Python列表或其它的序列類型轉換成NumPy數組。

import numpy as np

a = [1, 2, 3]
arr1 = np.asarray(a)

print(type(arr1))
print(arr1.shape)
print(arr1.dtype)

b = 'hello world'
arr2 = np.asarray(b, dtype='c')

print(type(arr2))
print(arr2.shape)
print(arr2.dtype)

運行結果:


(3,)
int64

(11,)
|S1

從上面的示例中可以看出,asarray可以將Python的字符串轉換為NumPy數組,並且可以指定數據類型。

三、array選取相關

除了可以將列表或序列轉換為NumPy數組之外,asarray函數還可以用於從現有的數組中創建新的數組。這種情況下,使用asarray的效果相當於使用array函數。比如,我們可以用asarray選取數組的某一部分,並用該部分創建一個新數組。

import numpy as np

a = np.array([[1, 2], [3, 4]])
arr1 = np.asarray(a)

print(type(arr1))
print(arr1)

arr2 = np.asarray(a, dtype=np.float64)

print(type(arr2))
print(arr2)

運行結果:


[[1 2]
 [3 4]]

[[1. 2.]
 [3. 4.]]

從結果中可以看出,asarray創建的數組與原數組相同,並且也可以指定數據類型。

四、asarray作為索引數組

另一個使用asarray函數的常見情況是作為索引數組使用。我們可以將一維索引數組轉換成多維布爾數組來訪問數組中的某些元素。

import numpy as np

data = np.arange(10)
index = np.array([2, 1, 3, 6])
arr1 = np.asarray(data[index])

print(arr1)

arr2 = np.zeros(10, dtype=bool)
arr2[index] = True
arr3 = data[arr2]

print(arr3)

運行結果:

[2 1 3 6]
[2 1 3 6]

以上示例展示了如何使用asarray將一維索引數組轉換為多維索引,並從數據中選取所需元素。

五、總結

asarray函數是NumPy庫中常用的工具之一,它可以從不同的數據源創建NumPy數組並將其視為一個NumPy數組。與array方法相比,asarray函數具有更多的優勢,例如:能夠接受可迭代對象等。在創建索引和選取元素時,asarray也是一個非常有用的工具。

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-25 18:38
下一篇 2024-12-25 18:39

相關推薦

  • index.html怎麼打開 – 詳細解析

    一、index.html怎麼打開看 1、如果你已經擁有了index.html文件,那麼你可以直接使用任何一個現代瀏覽器打開index.html文件,比如Google Chrome、…

    編程 2025-04-25
  • Resetful API的詳細闡述

    一、Resetful API簡介 Resetful(REpresentational State Transfer)是一種基於HTTP協議的Web API設計風格,它是一種輕量級的…

    編程 2025-04-25
  • 關鍵路徑的詳細闡述

    關鍵路徑是項目管理中非常重要的一個概念,它通常指的是項目中最長的一條路徑,它決定了整個項目的完成時間。在這篇文章中,我們將從多個方面對關鍵路徑做詳細的闡述。 一、概念 關鍵路徑是指…

    編程 2025-04-25
  • AXI DMA的詳細闡述

    一、AXI DMA概述 AXI DMA是指Advanced eXtensible Interface Direct Memory Access,是Xilinx公司提供的基於AMBA…

    編程 2025-04-25
  • neo4j菜鳥教程詳細闡述

    一、neo4j介紹 neo4j是一種圖形數據庫,以實現高效的圖操作為設計目標。neo4j使用圖形模型來存儲數據,數據的表述方式類似於實際世界中的網絡。neo4j具有高效的讀和寫操作…

    編程 2025-04-25
  • c++ explicit的詳細闡述

    一、explicit的作用 在C++中,explicit關鍵字可以在構造函數聲明前加上,防止編譯器進行自動類型轉換,強制要求調用者必須強制類型轉換才能調用該函數,避免了將一個參數類…

    編程 2025-04-25
  • HTMLButton屬性及其詳細闡述

    一、button屬性介紹 button屬性是HTML5新增的屬性,表示指定文本框擁有可供點擊的按鈕。該屬性包括以下幾個取值: 按鈕文本 提交 重置 其中,type屬性表示按鈕類型,…

    編程 2025-04-25
  • crontab測試的詳細闡述

    一、crontab的概念 1、crontab是什麼:crontab是linux操作系統中實現定時任務的程序,它能夠定時執行與系統預設時間相符的指定任務。 2、crontab的使用場…

    編程 2025-04-25
  • Vim使用教程詳細指南

    一、Vim使用教程 Vim是一個高度可定製的文本編輯器,可以在Linux,Mac和Windows等不同的平台上運行。它具有快速移動,複製,粘貼,查找和替換等強大功能,尤其在面對大型…

    編程 2025-04-25
  • 網站測試工具的詳細闡述

    一、測試工具的概述 在軟件開發的過程中,測試工具是一個非常重要的環節。測試工具可以快速、有效地檢測軟件中的缺陷,提高軟件的質量和穩定性。與此同時,測試工具還可以提高軟件開發的效率,…

    編程 2025-04-25

發表回復

登錄後才能評論