python數組初始化_Python Numpy 數組的初始化和基本操作

Python 是一種高級的,動態的,多泛型的編程語言。Python代碼很多時候看起來就像是偽代碼一樣,因此你可以使用很少的幾行可讀性很高的代碼來實現一個非常強大的想法。

一.基礎:

Numpy的主要數據類型是ndarray,即多維數組。它有以下幾個屬性:

ndarray.ndim:數組的維數

ndarray.shape:數組每一維的大小

ndarray.size:數組中全部元素的數量

ndarray.dtype:數組中元素的類型(numpy.int32, numpy.int16, and numpy.float64等)

ndarray.itemsize:每個元素占幾個字節

例子:

>>> import numpy as np

>>> a = np.arange(15).reshape(3, 5)

>>> a

array([[ 0, 1, 2, 3, 4],

[ 5, 6, 7, 8, 9],

[10, 11, 12, 13, 14]])

>>> a.shape

(3, 5)

>>> a.ndim

2

>>> a.dtype.name

'int64'

>>> a.itemsize

8

>>> a.size

15

>>> type(a)

>>> b = np.array([6, 7, 8])

>>> b

array([6, 7, 8])

>>> type(b)

二.創建數組:

使用array函數講tuple和list轉為array:

>>> import numpy as np

>>> a = np.array([2,3,4])

>>> a

array([2, 3, 4])

>>> a.dtype

dtype('int64')

>>> b = np.array([1.2, 3.5, 5.1])

>>> b.dtype

dtype('float64')

多維數組:

>>> b = np.array([(1.5,2,3), (4,5,6)])

>>> b

array([[ 1.5, 2. , 3. ],

[ 4. , 5. , 6. ]])

生成數組的同時指定類型:

>>> c = np.array( [ [1,2], [3,4] ], dtype=complex )

>>> c

array([[ 1.+0.j, 2.+0.j],

[ 3.+0.j, 4.+0.j]])

生成數組并賦為特殊值:

ones:全1

zeros:全0

empty:隨機數,取決于內存情況

>>> np.zeros( (3,4) )

array([[ 0., 0., 0., 0.],

[ 0., 0., 0., 0.],

[ 0., 0., 0., 0.]])

>>> np.ones( (2,3,4), dtype=np.int16 ) # dtype can also be specified

array([[[ 1, 1, 1, 1],

[ 1, 1, 1, 1],

[ 1, 1, 1, 1]],

[[ 1, 1, 1, 1],

[ 1, 1, 1, 1],

[ 1, 1, 1, 1]]], dtype=int16)

>>> np.empty( (2,3) ) # uninitialized, output may vary

array([[ 3.73603959e-262, 6.02658058e-154, 6.55490914e-260],

[ 5.30498948e-313, 3.14673309e-307, 1.00000000e+000]])

生成均勻分布的array:

arange(最小值,最大值,步長)(左閉右開)

linspace(最小值,最大值,元素數量)

>>> np.arange( 10, 30, 5 )

array([10, 15, 20, 25])

>>> np.arange( 0, 2, 0.3 ) # it accepts float arguments

array([ 0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])

>>> np.linspace( 0, 2, 9 ) # 9 numbers from 0 to 2

array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])

>>> x = np.linspace( 0, 2*pi, 100 ) # useful to evaluate function at lots of points

三.基本運算:

整個array按順序參與運算:

>>> a = np.array( [20,30,40,50] )

>>> b = np.arange( 4 )

>>> b

array([0, 1, 2, 3])

>>> c = a-b

>>> c

array([20, 29, 38, 47])

>>> b**2

array([0, 1, 4, 9])

>>> 10*np.sin(a)

array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854])

>>> a<35

array([ True, True, False, False], dtype=bool)

兩個二維使用*符號仍然是按位置一對一相乘,如果想表示矩陣乘法,使用dot:

>>> A = np.array( [[1,1],

... [0,1]] )

>>> B = np.array( [[2,0],

... [3,4]] )

>>> A*B # elementwise product

array([[2, 0],

[0, 4]])

>>> A.dot(B) # matrix product

array([[5, 4],

[3, 4]])

>>> np.dot(A, B) # another matrix product

array([[5, 4],

[3, 4]])

內置函數(min,max,sum),同時可以使用axis指定對哪一維進行操作:

>>> b = np.arange(12).reshape(3,4)

>>> b

array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

>>>

>>> b.sum(axis=0) # sum of each column

array([12, 15, 18, 21])

>>>

>>> b.min(axis=1) # min of each row

array([0, 4, 8])

>>>

>>> b.cumsum(axis=1) # cumulative sum along each row

array([[ 0, 1, 3, 6],

[ 4, 9, 15, 22],

[ 8, 17, 27, 38]])

Numpy同時提供很多全局函數

>>> B = np.arange(3)

>>> B

array([0, 1, 2])

>>> np.exp(B)

array([ 1. , 2.71828183, 7.3890561 ])

>>> np.sqrt(B)

array([ 0. , 1. , 1.41421356])

>>> C = np.array([2., -1., 4.])

>>> np.add(B, C)

array([ 2., 0., 6.])

四.尋址,索引和遍歷:

一維數組的遍歷語法和python list類似:

>>> a = np.arange(10)**3

>>> a

array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729])

>>> a[2]

8

>>> a[2:5]

array([ 8, 27, 64])

>>> a[:6:2] = -1000 # equivalent to a[0:6:2] = -1000; from start to position 6, exclusive, set every 2nd element to -1000

>>> a

array([-1000, 1, -1000, 27, -1000, 125, 216, 343, 512, 729])

>>> a[ : :-1] # reversed a

array([ 729, 512, 343, 216, 125, -1000, 27, -1000, 1, -1000])

>>> for i in a:

... print(i**(1/3.))

...

nan

1.0

nan

3.0

nan

5.0

6.0

7.0

8.0

9.0

多維數組的訪問通過給每一維指定一個索引,順序是先高維再低維:

>>> def f(x,y):

... return 10*x+y

...

>>> b = np.fromfunction(f,(5,4),dtype=int)

>>> b

array([[ 0, 1, 2, 3],

[10, 11, 12, 13],

[20, 21, 22, 23],

[30, 31, 32, 33],

[40, 41, 42, 43]])

>>> b[2,3]

23

>>> b[0:5, 1] # each row in the second column of b

array([ 1, 11, 21, 31, 41])

>>> b[ : ,1] # equivalent to the previous example

array([ 1, 11, 21, 31, 41])

>>> b[1:3, : ] # each column in the second and third row of b

array([[10, 11, 12, 13],

[20, 21, 22, 23]])

When fewer indices are provided than the number of axes, the missing indices are considered complete slices:

>>>

>>> b[-1] # the last row. Equivalent to b[-1,:]

array([40, 41, 42, 43])

…符號表示將所有未指定索引的維度均賦為 : ,:在python中表示該維所有元素:

>>> c = np.array( [[[ 0, 1, 2], # a 3D array (two stacked 2D arrays)

... [ 10, 12, 13]],

... [[100,101,102],

... [110,112,113]]])

>>> c.shape

(2, 2, 3)

>>> c[1,...] # same as c[1,:,:] or c[1]

array([[100, 101, 102],

[110, 112, 113]])

>>> c[...,2] # same as c[:,:,2]

array([[ 2, 13],

[102, 113]])

遍歷:

如果只想遍歷整個array可以直接使用:

>>> for row in b:

... print(row)

...

[0 1 2 3]

[10 11 12 13]

[20 21 22 23]

[30 31 32 33]

[40 41 42 43]

但是如果要對每個元素進行操作,就要使用flat屬性,這是一個遍歷整個數組的迭代器

>>> for element in b.flat:

... print(element)

...

總結

以上所述是小編給大家介紹的Python Numpy 數組的初始化和基本操作,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446174.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446174.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446174.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

密碼學專題 OpenSSL中SSL相關指令

再談SSL和OpenSSL 由于SSL協議已經是密碼學和PKI技術中非常具體的一個應用協議&#xff0c;為了實現它&#xff0c;OpenSSL在密碼學基礎應用和PKI技術的基礎實現上做了大量的工作&#xff0c;才逐漸形成和奠定了OpenSSL在密碼學應用和PKI技術開發中的重要基礎軟件包地位。Open…

python企業發放的獎金_你公司的年終獎發了嗎?

沒發, 被裁了. 跨境電商行業, 2017.7 入職,2018.11.19 下午接到裁員通知.. 人事找我聊了下,叫我一個星期之內走,補償1個月工資.... 我想想有點不對勁.. 于是我百度了下,5分鐘之后,提出了我的方案: 1、按照勞動法應該補償1.5個月,并且提前1月通知 2、補償2.5個月. 我立馬走. 最后…

使用MetaMask實現轉賬交易時附帶Input Data數據

進入如下頁面&#xff0c;點擊View Assert in Explorer進入Etherscan網站&#xff0c;就可以看到本賬戶先前所有的交易信息。 字段分析 Txn Hash 是交易的HashMethod&#xff1a;交易的類型&#xff0c;一般是兩種&#xff0c;如果是Transfer指定的是合約部署&#xff1b;如…

Ubuntu安裝Google瀏覽器

下載谷歌瀏覽器 直接使用Ubuntu自帶的火狐瀏覽器進行下載 默認下載到/tmp臨時文件夾里面&#xff0c;考慮到權限問題&#xff0c;需要將其移動到 Downloads文件夾下面使用命令 sudo mv ./goo&#xff08;Tab&#xff09;~/Down(Tab)使用命令行的方式進行下載 wget https://dl.g…

普通類創建獲取session 方式_猿蛻變11——一文搞懂mybatis花式使用方式

看過之前的蛻變系列文章&#xff0c;相信你對mybatis有了初步的認識。但是這些還不夠&#xff0c;我們今天進一步來了解下mybatis的一些用法。猿蛻變同樣是一個原創系列文章&#xff0c;幫助你從一個普通的小白&#xff0c;開始掌握一些行業內通用的框架技術知識以及鍛煉你對系…

Ubuntu配置IPFS的環境

參考鏈接 Ubuntu上IPFS環境搭建 - 簡書 下載安裝包 下載地址&#xff1a;https://dist.ipfs.io/#go-ipfs頁面會自動根據你的操作系統提供適合的下載安裝包&#xff0c;所以需要在Ubuntu環境下點開上面那個鏈接&#xff0c;網頁自動識別當前的平臺并提供對應的版本&#xff0c…

composer升級_Composer-命令簡介

簡介Composer 是一個用于 PHP 依賴管理的工具。它實現了讓你聲明項目所依賴的庫&#xff0c;并幫你完成安裝/更新過程。以下命令來自 composer version 1.8.0。翻譯使用【百度翻譯】。通過在命令窗口執行&#xff1a;composer或者&#xff1a;composer list得到 composer 的全部…

Ubuntu搭建聯盟鏈,實現節點之間數據同步

安裝go環境 從參考鏈接選擇Linux版本的go的安裝包 使用命令 mv go&#xff08;Tab補全&#xff09;/usr/local 移動go安裝包到/usr/local目錄下使用命令解壓 sudo tar -xvzf go(Tab補全) 配置環境 sudo gedit ~/.profile export PATH$PATH:/usr/local/go/bin激活生效 sou…

關于python語言的編程模式、哪個說法正確_測驗1: Python基本語法元素 (第1周) 單選題+程序題...

第1章測驗&#xff0c;共10道單選題和2道編程題&#xff0c;限答1次 單選題 1.Guido van Rossum正式對外發布Python版本的年份是&#xff1a; A.2002 B.1998 C.2008 D.1991 正確答案&#xff1a; D Python成功了&#xff0c;所以早年的開發歷史也受到關注&#xff0c;以下是Gui…

火狐瀏覽器添加MetaMask錢包和本地開啟私有鏈開發

火狐瀏覽器添加MetaMask錢包 因為對其配置了代理工具&#xff0c;所以直接使用谷歌引擎搜索MetaMask錢包即可第一次使用&#xff0c;立即開始設置 點擊我同意&#xff0c;進行密碼的創建 牢記助記詞&#xff0c;助記詞及其關鍵&#xff0c;將其存儲在安全的地方 區塊鏈-開發 M…

python賦值01_python學習筆記1-賦值與字符串 | 學步園

閱讀本學習筆記需有一定語言基礎&#xff0c;閑話少說&#xff0c;我們開始 一、賦值與數字 【簡介】 python的賦值很簡單&#xff1a; number 1 # 數值 number 2 2 # 支持加減乘除運算 number (1 2j) * (1 - 1j) # 支持復數的運算 二、字符串 【簡介】 str "Hello,…

CLion導入用戶自己的lib和頭文件

文件的層級結構如上面所示對應的CMakeLists.txt配置文件如下面所示 cmake_minimum_required(VERSION 3.15) project(smart_shap)set(CMAKE_CXX_STANDARD 14)add_executable(${PROJECT_NAME} main.cpp )#target_link_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}…

東芝移動硬盤驅動_傳輸數據不用等,高速移動硬盤數據線暢享快傳體驗

不管你是設計師&#xff0c;攝影師亦或是辦公一族&#xff0c;幾乎都能用到電腦&#xff0c;而電腦里的文件如果很多的話&#xff0c;為了安全起見都會備份一份數據&#xff0c;以免電腦儲存容量過大導致電腦卡頓。另一方面&#xff0c;為了保護數據防止丟失造成不必要的麻煩&a…

使用國密瀏覽器和使用Wireshark進行國密抓包

使用的軟件 信密瀏覽器 密信瀏覽器發布Windows正式版 - 密信技術國密Wireshark GMSSL - 國密SSL實驗室支持國密算法的網站 https://www.wotrus.com/ 流程操作 打開windows終端&#xff0c;使用命令ping沃通網站&#xff0c;找到這個網站的ip地址 ping www.wotrus.com打…

django框架學習文檔_Python四大主流網絡編程框架,你知道么?

高并發處理框架—— TornadoTornado 是使用 Python 編寫的一個強大的可擴展的 Web 服務器。它在處理高網絡流量時表現得足夠強健&#xff0c;卻在創建和編寫時有著足夠的輕量級&#xff0c;并能夠被用在大量的應用和工具中。Tornado 作為 FriendFeed 網站的基礎框架&#xff0c…

VS Studio報錯無法解析的外部符號 _imp_XXXXXXXXX

出現字符_imp&#xff0c;說明不是真正的靜態庫&#xff0c;而是某個動態庫的導入庫&#xff0c;導入函數和自己不同名&#xff0c;所以加了字符_imp。比如說_imp_GetUserNameA就是GetUserNameA函數。會報這種錯誤的原因&#xff1a; 1、說明注冊表函數沒有相關的lib庫&#xf…

hashmap put過程_阿里十年技術大咖,教你如何分析1.7中HashMap死循環

在多線程環境下&#xff0c;使用HashMap進行put操作會引起死循環&#xff0c;導致CPU利用率接近100%&#xff0c;HashMap在并發執行put操作時會引起死循環&#xff0c;是因為多線程會導致HashMap的Entry鏈表形成環形數據結構&#xff0c;一旦形成環形數據結構&#xff0c;Entry…

Socket代碼實現服務端 和 客戶端之間通信

服務端代碼 // Socket_connection.cpp : 此文件包含 "main" 函數。程序執行將在此處開始并結束。 // #ifndef UNICODE #define UNICODE #endif#define WIN32_LEAN_AND_MEAN#include <winsock2.h> #include <Ws2tcpip.h> #include <stdio.h> #incl…

python綜合管理系統_Python-20 (信息系統-框架/循環/增刪/綜合應用)

# 1. 目標 這里我們通過簡單案例的綜合應用&#xff0c;了解框架的概念&#xff0c;感受循環、字符字典數據處理等基礎點的應用場景 # 2. 框架 搭建一個人員信息管理系統的簡單框架&#xff0c;初步感受框架的概念。 1> 主程序 -- cards_mian.py程序的主功能代碼&…

本地搭建server和客戶端使用端口進行數據通信,使用Wireshark抓取127.0.0.1環回地址并分析通信數據

本地搭建服務端和客戶端 參考網址 Socket代碼實現服務端 和 客戶端之間通信_CHYabc123456hh的博客-CSDN博客server指定通信的端口是 5099client 使用的端口是動態變化的&#xff0c;因此在wireshark里面需要設定的抓取端口是 5099 使用wireshark開啟抓包 參考鏈接 [tcp] Wir…