最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析NumPy的核心函數(shù)np.array()

 更新時間:2025年07月02日 14:46:26   作者:GG不是gg  
NumPy為Python提供了高效的多維數(shù)組對象以及一系列用于處理這些數(shù)組的工具,極大地簡化了數(shù)值計算的過程,而np.array()作為NumPy庫的核心函數(shù)之一,是創(chuàng)建和操作數(shù)組的基礎(chǔ),感興趣的可以了解一下

NumPy為Python提供了高效的多維數(shù)組對象以及一系列用于處理這些數(shù)組的工具,極大地簡化了數(shù)值計算的過程。而np.array()作為NumPy庫的核心函數(shù)之一,是創(chuàng)建和操作數(shù)組的基礎(chǔ)。

NumPy與np.array()簡介

NumPy(Numerical Python的簡稱)是Python中用于處理數(shù)組運算的擴展庫,它提供了大量的數(shù)學函數(shù)來操作數(shù)組,使得數(shù)組的處理變得高效且簡潔。np.array()則是NumPy庫中的一個基礎(chǔ)函數(shù),用于創(chuàng)建數(shù)組。

NumPy的重要性

NumPy在科學計算、數(shù)據(jù)分析、機器學習等眾多領(lǐng)域都有著廣泛的應用。它的高效性源于其底層使用C語言實現(xiàn),能夠充分利用計算機的硬件資源,對數(shù)組進行快速的運算。與Python原生的列表相比,NumPy數(shù)組在內(nèi)存中是連續(xù)存儲的,這使得數(shù)組元素之間的訪問和計算更為高效。例如,在進行大規(guī)模的數(shù)據(jù)處理時,使用NumPy數(shù)組可以顯著提高程序的運行速度。

np.array()的作用

np.array()函數(shù)的主要作用是將Python中的各種數(shù)據(jù)結(jié)構(gòu)(如列表、元組等)轉(zhuǎn)換為NumPy數(shù)組,或者根據(jù)指定的參數(shù)創(chuàng)建一個新的數(shù)組。通過np.array()創(chuàng)建的數(shù)組可以方便地進行各種數(shù)學運算、索引和切片操作,為后續(xù)的數(shù)據(jù)處理和分析提供了基礎(chǔ)。

np.array()函數(shù)的詳細參數(shù)

np.array()函數(shù)的完整語法為:numpy.array(object, dtype = None, *, copy = True, order = 'K', subok = False, ndmin = 0, like = None)。下面我們來詳細介紹每個參數(shù)的含義和用法。

object參數(shù)

object參數(shù)是必填項,它表示要轉(zhuǎn)換為數(shù)組的對象,可以是一個數(shù)組、任何暴露數(shù)組接口的對象、其__array__方法返回數(shù)組的對象,或者任何(嵌套的)序列。如果object是一個標量,則返回一個包含該標量的0維數(shù)組。

例如,我們可以使用列表來創(chuàng)建一個一維數(shù)組:

import numpy as np
arr_1d = np.array([1, 2, 3, 4, 5])
print(arr_1d)

輸出結(jié)果為:[1 2 3 4 5]

也可以使用嵌套列表來創(chuàng)建一個二維數(shù)組:

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

輸出結(jié)果為:

[[1 2 3]
 [4 5 6]
 [7 8 9]]

dtype參數(shù)

dtype參數(shù)用于指定數(shù)組的數(shù)據(jù)類型,它是可選的。如果不指定dtype,NumPy會根據(jù)傳入的數(shù)據(jù)自動推斷出合適的數(shù)據(jù)類型。例如:

arr = np.array([1, 2, 3])
print(arr.dtype)

輸出結(jié)果為:int64

在這個例子中,由于傳入的數(shù)據(jù)都是整數(shù),NumPy自動推斷出數(shù)組的數(shù)據(jù)類型為int64

然而,在某些情況下,我們可能需要顯式地指定數(shù)據(jù)類型,以滿足特定的需求。比如,當我們需要創(chuàng)建一個包含浮點數(shù)的數(shù)組時,可以這樣做:

arr_float = np.array([1, 2, 3], dtype = np.float32)
print(arr_float.dtype)

輸出結(jié)果為:float32

通過指定dtype = np.float32,我們創(chuàng)建了一個數(shù)據(jù)類型為32位浮點數(shù)的數(shù)組。

指定數(shù)據(jù)類型的好處之一是可以優(yōu)化內(nèi)存使用。例如,如果我們知道數(shù)組中的數(shù)據(jù)范圍較小,并且不需要高精度的計算,可以使用較小的數(shù)據(jù)類型,如int8float16,這樣可以減少內(nèi)存的占用。

copy參數(shù)

copy參數(shù)用于控制是否復制數(shù)據(jù),它是一個布爾值,默認為True。當copy = True時,無論輸入數(shù)據(jù)的來源如何,都會創(chuàng)建一個數(shù)據(jù)的副本;當copy = False時,如果輸入數(shù)據(jù)本身就是一個NumPy數(shù)組,并且不需要進行任何數(shù)據(jù)類型轉(zhuǎn)換或其他修改,那么將不會復制數(shù)據(jù),而是直接使用原數(shù)組的引用。

需要注意的是,當copy = None時,只有在__array__返回副本、obj是嵌套序列或需要滿足其他要求(如dtypeorder等)時才會進行復制。

例如,下面的代碼中,由于輸入數(shù)據(jù)是一個列表,所以無論copy參數(shù)的值如何,都會創(chuàng)建一個新的數(shù)組副本:

list_data = [1, 2, 3]
arr1 = np.array(list_data, copy = True)
arr2 = np.array(list_data, copy = False)
arr3 = np.array(list_data, copy = None)
print(arr1 is arr2)  # False
print(arr1 is arr3)  # False

輸出結(jié)果均為False,說明arr1、arr2arr3都是不同的數(shù)組對象。

而當輸入數(shù)據(jù)是一個NumPy數(shù)組時,如果copy = False且不需要進行其他修改,那么將不會復制數(shù)據(jù):

arr4 = np.array([1, 2, 3])
arr5 = np.array(arr4, copy = False)
print(arr4 is arr5)  # True

輸出結(jié)果為True,說明arr4arr5指向同一個數(shù)組對象。

order參數(shù)

order參數(shù)用于指定數(shù)組在內(nèi)存中的存儲順序,它有四個可選值:'K'、'A'、'C''F'。

  • 'C'表示按C語言的行優(yōu)先順序存儲,即先存儲第一行,再存儲第二行,以此類推。
  • 'F'表示按Fortran語言的列優(yōu)先順序存儲,即先存儲第一列,再存儲第二列,以此類推。
  • 'A'表示如果輸入數(shù)據(jù)是Fortran連續(xù)的,則按'F'順序存儲,否則按'C'順序存儲。
  • 'K'表示盡可能保持輸入數(shù)據(jù)的原始順序。

默認情況下,order = 'K'

例如,我們可以通過order參數(shù)來控制二維數(shù)組的存儲順序:

arr_2d_c = np.array([[1, 2, 3], [4, 5, 6]], order = 'C')
arr_2d_f = np.array([[1, 2, 3], [4, 5, 6]], order = 'F')
print(arr_2d_c.flags)
print(arr_2d_f.flags)

輸出結(jié)果分別為:

C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False

C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False

從輸出結(jié)果可以看出,arr_2d_c是按行優(yōu)先順序存儲的(C_CONTIGUOUS : True),而arr_2d_f是按列優(yōu)先順序存儲的(F_CONTIGUOUS : True)。

subok參數(shù)

subok參數(shù)是一個布爾值,默認為False。當subok = True時,返回的數(shù)組將保留輸入數(shù)據(jù)的子類類型;當subok = False時,無論輸入數(shù)據(jù)的類型如何,返回的數(shù)組都將被強制轉(zhuǎn)換為基類ndarray類型。

例如,假設我們有一個自定義的數(shù)組子類MyArray,它繼承自np.ndarray

class MyArray(np.ndarray):
    pass
data = MyArray([1, 2, 3])
arr1 = np.array(data, subok = True)
arr2 = np.array(data, subok = False)
print(type(arr1))  # <class '__main__.MyArray'>
print(type(arr2))  # <class 'numpy.ndarray'>

輸出結(jié)果表明,當subok = True時,arr1仍然是MyArray類型;而當subok = False時,arr2被轉(zhuǎn)換為了np.ndarray類型。

ndmin參數(shù)

ndmin參數(shù)用于指定返回數(shù)組的最小維度,它是一個整數(shù),默認為0。如果輸入數(shù)據(jù)的維度小于ndmin,則會在數(shù)組的形狀前面添加一維,直到滿足最小維度的要求。

例如:

arr1 = np.array([1, 2, 3], ndmin = 1)
arr2 = np.array([1, 2, 3], ndmin = 2)
arr3 = np.array([1, 2, 3], ndmin = 3)
print(arr1.shape)  # (3,)
print(arr2.shape)  # (1, 3)
print(arr3.shape)  # (1, 1, 3)

在這個例子中,輸入數(shù)據(jù)[1, 2, 3]是一個一維數(shù)組。當ndmin = 1時,數(shù)組形狀不變;當ndmin = 2時,在前面添加了一維,變成了二維數(shù)組(1, 3);當ndmin = 3時,在前面添加了兩維,變成了三維數(shù)組(1, 1, 3)。

like參數(shù)

like參數(shù)是在NumPy 1.20.0版本中新增的,它用于指定一個參考對象,以便創(chuàng)建與該對象兼容的數(shù)組。如果傳入的like參數(shù)支持__array_function__協(xié)議,那么結(jié)果將由該協(xié)議定義。

例如:

arr = np.array([1, 2, 3])
new_arr = np.array([4, 5, 6], like = arr)
print(type(new_arr))  # <class 'numpy.ndarray'>

在這個例子中,我們以arr為參考對象,創(chuàng)建了一個新的數(shù)組new_arrnew_arr的類型與arr相同,都是np.ndarray。

np.array()函數(shù)的使用示例

創(chuàng)建基本的一維和二維數(shù)組

如前文所述,使用np.array()函數(shù)可以很方便地創(chuàng)建一維和二維數(shù)組。
創(chuàng)建一維數(shù)組:

arr_1d = np.array([1, 2, 3, 4, 5])
print(arr_1d)

創(chuàng)建二維數(shù)組:

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

創(chuàng)建具有特定數(shù)據(jù)類型的數(shù)組

通過dtype參數(shù),我們可以創(chuàng)建具有特定數(shù)據(jù)類型的數(shù)組。
創(chuàng)建整數(shù)類型的數(shù)組:

arr_int = np.array([1, 2, 3], dtype = np.int16)
print(arr_int.dtype)

創(chuàng)建浮點數(shù)類型的數(shù)組:

arr_float = np.array([1.0, 2.0, 3.0], dtype = np.float64)
print(arr_float.dtype)

創(chuàng)建復數(shù)類型的數(shù)組:

arr_complex = np.array([1 + 1j, 2 + 2j, 3 + 3j], dtype = np.complex128)
print(arr_complex.dtype)

創(chuàng)建多維數(shù)組

np.array()函數(shù)不僅可以創(chuàng)建一維和二維數(shù)組,還可以創(chuàng)建更高維度的數(shù)組。只需在傳入的序列中嵌套更多的層級即可。
創(chuàng)建三維數(shù)組:

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

輸出結(jié)果為:

[[[1 2]
  [3 4]]
 [[5 6]
  [7 8]]]

從其他數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為數(shù)組

除了使用列表和元組來創(chuàng)建數(shù)組外,np.array()函數(shù)還可以將其他數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為數(shù)組。
將集合轉(zhuǎn)換為數(shù)組:

set_data = {1, 2, 3, 3}  # 集合會自動去重
arr_set = np.array(set_data)
print(arr_set)

輸出結(jié)果為:[1 2 3]

將字符串轉(zhuǎn)換為數(shù)組:

str_data = "hello"
arr_str = np.array(list(str_data))
print(arr_str)

輸出結(jié)果為:['h' 'e' 'l' 'l' 'o']

使用ndmin參數(shù)創(chuàng)建具有最小維度的數(shù)組

通過ndmin參數(shù),我們可以確保創(chuàng)建的數(shù)組具有指定的最小維度。

arr1 = np.array([1, 2, 3], ndmin = 2)
print(arr1.shape)  # (1, 3)
arr2 = np.array([1, 2, 3], ndmin = 3)
print(arr2.shape)  # (1, 1, 3)

np.array()函數(shù)與與Python原生列表的比較

雖然Python原生列表也可以存儲多個元素,但與NumPy數(shù)組相比,它們有很多不同之處。

  1. 內(nèi)存存儲:NumPy數(shù)組在內(nèi)存中是連續(xù)存儲的,而Python列表是離散存儲的。這使得NumPy數(shù)組在進行數(shù)值計算時能夠更高效地利用內(nèi)存,提高計算速度。
  2. 數(shù)據(jù)類型:NumPy數(shù)組中的所有元素必須是同一數(shù)據(jù)類型,而Python列表可以包含不同數(shù)據(jù)類型的元素。這使得NumPy數(shù)組在進行數(shù)學運算時更加高效,因為不需要進行類型檢查和轉(zhuǎn)換。
  3. 運算效率:由于NumPy數(shù)組的內(nèi)存存儲方式和數(shù)據(jù)類型的一致性,NumPy提供了大量的優(yōu)化函數(shù),能夠?qū)?shù)組進行快速的數(shù)學運算。相比之下,使用Python原生列表進行相同的運算需要編寫循環(huán),效率較低。

例如,計算兩個數(shù)組的元素之和:

import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result_np = arr1 + arr2
print(result_np)

輸出結(jié)果為:[5 7 9]

而使用Python原生列表實現(xiàn)相同的功能:

list1 = [1, 2, 3]
list2 = [4, 5, 6]
result_list = []
for i in range(len(list1)):
    result_list.append(list1[i] + list2[i])
print(result_list)

輸出結(jié)果為:[5, 7, 9]

可以看到,使用NumPy數(shù)組的代碼更加簡潔,且在處理大規(guī)模數(shù)據(jù)時,運算效率會更高。

到此這篇關(guān)于深入解析NumPy的核心函數(shù)np.array()的文章就介紹到這了,更多相關(guān)NumPy np.array()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pandas中數(shù)據(jù)的排序與排名的具體使用

    pandas中數(shù)據(jù)的排序與排名的具體使用

    Pandas對數(shù)據(jù)進行排序和排名是非常常見的操作,本文主要介紹了pandas中數(shù)據(jù)的排序與排名的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • Python中的split()、rsplit()、splitlines()的區(qū)別解析

    Python中的split()、rsplit()、splitlines()的區(qū)別解析

    Python提供了三種字符串分割的方法:split()、rsplit()和splitlines(),本文主要通過案例介紹這三種字符串分割函數(shù)的區(qū)別,感興趣的朋友一起看看吧
    2023-12-12
  • Python中的套接字編程是什么?

    Python中的套接字編程是什么?

    不可否認,互聯(lián)網(wǎng)已成為“存在之魂”,其活動以“連接”或“網(wǎng)絡”為特征.使用套接字的最關(guān)鍵的基礎(chǔ)之一,使這些網(wǎng)絡成為可能.本文涵蓋了有關(guān)使用Python進行套接字編程的所有領(lǐng)域.套接字可以幫助您建立這些連接,而Python無疑可以簡化連接,需要的朋友可以參考下
    2021-06-06
  • Python基于jieba分詞實現(xiàn)snownlp情感分析

    Python基于jieba分詞實現(xiàn)snownlp情感分析

    情感分析(sentiment analysis)是2018年公布的計算機科學技術(shù)名詞,它可以根據(jù)文本內(nèi)容判斷出所代表的含義是積極的還是負面的等。本文將通過jieba分詞實現(xiàn)snownlp情感分析,感興趣的可以了解一下
    2023-01-01
  • termux中matplotlib無法顯示中文問題的解決方法

    termux中matplotlib無法顯示中文問題的解決方法

    這篇文章主要介紹了termux中matplotlib無法顯示中文問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • python生成帶有表格的圖片實例

    python生成帶有表格的圖片實例

    今天小編就為大家分享一篇python生成帶有表格的圖片實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python中整數(shù)的緩存機制講解

    Python中整數(shù)的緩存機制講解

    今天小編就為大家分享一篇關(guān)于Python中整數(shù)的緩存機制講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Python3用tkinter和PIL實現(xiàn)看圖工具

    Python3用tkinter和PIL實現(xiàn)看圖工具

    這篇文章給大家分享了Python3用tkinter和PIL實現(xiàn)看圖工具的詳細實例代碼,有興趣的朋友參考學習下。
    2018-06-06
  • python_tkinter事件類型詳情

    python_tkinter事件類型詳情

    這篇文章主要介紹了python_tkinter事件詳情,文章基于python_tkinter事件相關(guān)資料分享的內(nèi)容有事件綁定函數(shù),事件對象等相關(guān)自資料,需要的小伙伴可以參考一下
    2022-03-03
  • Python中斷點調(diào)試pdb包的用法詳解

    Python中斷點調(diào)試pdb包的用法詳解

    pdb(python debugger) 是 python 中的一個命令行調(diào)試包,為 python 程序提供了一種交互的源代碼調(diào)試功能,下面就跟隨小編一起學習一下它的具體使用吧
    2024-01-01

最新評論

海阳市| 稷山县| 新绛县| 枣庄市| 临洮县| 威信县| 娱乐| 阿瓦提县| 子洲县| 东港市| 资中县| 阳山县| 马山县| 衡阳县| 乌兰浩特市| 宜川县| 临澧县| 民县| 靖安县| 景德镇市| 比如县| 永修县| 潼关县| 兴化市| 普陀区| 洛阳市| 霍山县| 安徽省| 泸西县| 曲麻莱县| 光泽县| 新绛县| 昌黎县| 长汀县| 义乌市| 汾阳市| 宜川县| 连平县| 福泉市| 佛山市| 衡阳市|