摘要:將以指定數量的元素創建數組,并平分開始值和結束值。將創建數組的集合用一維數組來模擬高維數組,每一維都有表示它的變量。一個例子說明比口頭描述好得多計算規則網格上的高維函數時,這會非常有用。
原文:Array creation
譯者:飛龍
?
導言另見
數組創建例程
數組創建的一般機制有五種:
從其它Python的結構轉換(如列表和元組)
內置的NumPy數組創建對象(如 arange, ones, zeros以及其它)
從磁盤中讀取標準或自定義格式的數據
通過使用字符串或者緩沖區,從原始的字節創建數組
使用特殊的庫函數(比如random)
本節不會涉及復制和連接等擴展和轉換現有數組的方法,也不會涉及創建對象數組和結構化數組。這些會在它們自己的章節中講述。
將Python類似數組的對象轉換為NumPy數組通常,Python中排列為數組結構的數值數據可以通過array()函數來轉換成數組,典型的例子就是列表和元組。具體使用方法請見array()函數的文檔。一些對象也支持數組的協議,并且可以用這種方法轉換成數組。辨識一個對象是否能轉換為數組,最簡單的方法就是在交互式環境中嘗試這一方法,看看它是否有效(即Python之道)。
例如:
>>> x = np.array([2,3,1,0]) >>> x = np.array([2, 3, 1, 0]) >>> x = np.array([[1,2.0],[0,0],(1+1j,3.)]) # note mix of tuple and lists, and types >>> x = np.array([[ 1.+0.j, 2.+0.j], [ 0.+0.j, 0.+0.j], [ 1.+1.j, 3.+0.j]])內置的NumPy數組創建
NumPy具有從無到有創建數組的內置功能:
zeros(shape) 將創建一個填充為0的指定形狀的數組。
>>> np.zeros((2, 3)) array([[ 0., 0., 0.], [ 0., 0., 0.]])
ones(shape) 將創建一個填充為1的數組。在其他所有方面都和zeros相同。
arange()將創建有規律的增量值數組。它的幾種用法請見docstring。這里給出幾個例子:
>>> np.arange(10) array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> np.arange(2, 10, dtype=np.float) array([ 2., 3., 4., 5., 6., 7., 8., 9.]) >>> np.arange(2, 3, 0.1) array([ 2. , 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9])
請注意,關于最后一個用例,有一些使用技巧,請見arrange的docstring。
linspace()將以指定數量的元素創建數組,并平分開始值和結束值。例如:
>>> np.linspace(1., 4., 6) array([ 1. , 1.6, 2.2, 2.8, 3.4, 4. ])
這些創建函數的好處是,可以保證元素個數、起始點和結束點,arange()一般不會指定任意的起始值、結束值和步長。
indices()將創建數組的集合(用一維數組來模擬高維數組),每一維都有表示它的變量。一個例子說明比口頭描述好得多:
>>> np.indices((3,3)) array([[[0, 0, 0], [1, 1, 1], [2, 2, 2]], [[0, 1, 2], [0, 1, 2], [0, 1, 2]]])
計算規則網格上的高維函數時,這會非常有用。
從磁盤讀取數組這大概是大數組創建的最常見情況。當然,細節取決于磁盤上的數據格式,所以這一節只能給出如何處理各種格式的一般建議。
標準二進制格式各個領域都有數組數據的標準格式。以下列出了用于讀取和返回NumPy數組的已知Python庫(也有其它的庫可以讀取數組并轉換為NumPy數組,所以也請看一下最后一節)
HDF5: PyTables FITS: PyFITS
一些格式不能直接讀取,但是不難將其轉換為類似PIL庫(能夠讀寫許多圖像格式,例如jpg、png以及其它)所支持的格式。
普通的ASCII格式逗號分隔值文件(CSV)被廣泛使用(可以被類似Excel的一些程序導入導出)。有一些在python中讀取這些文件的方法,例如Python和pylab(Matplotlib的一部分)中的函數。
更通用的ASCII文件可以使用SciPy的IO包來讀取。
自定義二進制格式有多種方法可以使用。如果文件有一個相對簡單的格式,那么你可以寫一個簡單的I/O庫并使用numpy fromfile()和tofile()方法直接讀寫NumPy數組(注意字節順序?。H绻幸粋€不錯的C/C++庫可以用于讀取數據,則可以用各種技巧把它封裝一下,雖然這可能要耗費一些工作量,也需要更多高級的知識來和C/C++交互。
特殊庫的使用有一些庫可以用于生成特殊用途的數組,這樣的庫不可能全部列舉出來。最常見的用法是使用許多數組生成函數來產生帶有隨機值的數組,以及使用一些生成特殊矩陣(如對角線)的功能函數。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37842.html
摘要:包的核心是對象。但有個例外,包括對象數組的元素大小是不同的。序列大小和速度在科學計算中尤為重要。例如考慮兩個長度相同的列表中每個元素相乘的情況。此外,編碼所需的工作量隨數據維數的增加而增加。這些信息主要用于高級用戶。 譯者:飛龍 1.1 NumPy 是什么? 原文:What is NumPy? NumPy是Python中用于科學計算的基礎包。它是一個Python庫,提供多維數組對象,各...
摘要:是什么今天開始會陸續為大家帶來數據科學常用包的基礎用法數據分析的工作涉及到大量的數值運算,一個高效方便的科學計算工具是必不可少的。 NumPy是什么? 今天開始會陸續為大家帶來數據科學常用包的基礎用法 數據分析的工作涉及到大量的數值運算,一個高效方便的科學計算工具是必不可少的。Python語言一開始并不是設計為科學計算使用的語言,隨著越來越多的人發現Python的易用性,逐漸出現了關于...
目錄Numpy簡介Numpy操作集合1、不同維度數據的表示1.1 一維數據的表示1.2 二維數據的表示1.3 三維數據的表示2、 為什么要使用Numpy2.1、Numpy的ndarray具有廣播功能2.2 Numpy數組的性能比Python原生數據類型高3 ndarray的屬性和基本操作3.1 ndarray的基本屬性3.2 ndarray元素類型3.3 創建ndarray的方式3.4 ndarr...
摘要:其他數據類型在中沒有對應。因此,使用數組標量確保了數組和標量之間具有相同的行為,無論值在不在數組中。不提供比的精度更高的特別是位四精度數據類型的是不能用的。 原文:Data types 譯者:飛龍 ? 另見 數據類型對象 數組類型和類型之間的轉換 NumPy支持的數值類型比Python更多。這一節會講述所有可用的類型,以及如何改變數組的數據類型。 數據類型 描述 bo...
摘要:注意和標準庫類并不相同,后者只處理一維數組和提供少量功能。然而,指定參數你可以吧運算應用到數組指定的軸上通用函數提供常見的數學函數如和。在中,這些叫作通用函數。函數,另一方面,將一維數組以行組合成二維數組。 原文:Quickstart tutorial 譯者:Reverland 來源:試驗性NumPy教程(譯) 2.1 先決條件 在閱讀這個教程之前,你多少需要知道點python。如...
閱讀 1611·2023-04-25 16:29
閱讀 949·2021-11-15 11:38
閱讀 2285·2021-09-23 11:45
閱讀 1410·2021-09-22 16:03
閱讀 2532·2019-08-30 15:54
閱讀 1198·2019-08-30 10:53
閱讀 2599·2019-08-29 15:24
閱讀 1095·2019-08-26 12:25