当前位置: 首页>Python>正文

python的numpy,NumPy-01

python的numpy,NumPy-01

NumPy-01

  • NumPy數組屬性
  • 創建NumPy數組
  • 數據類型對象
  • 索引

一.NumPy數組屬性

在 NumPy中,每一個線性的數組稱為是一個軸(axis),也就是維度(dimensions)。比如說,二維數組相當于是兩個一維數組,其中第一個一維數組中每個元素又是一個一維數組。所以一維數組就是 NumPy 中的軸(axis),第一個軸相當于是底層數組,第二個軸是底層數組里的數組。而軸的數量——秩,就是數組的維數。很多時候可以聲明 axis。axis=0,表示沿著第 0 軸進行操作,即對每一列進行操作;axis=1,表示沿著第1軸進行操作,即對每一行進行操作。

屬性說明
ndarray.ndim秩,即軸的數量或維度的數量
ndarray.shape數組的維度,對于矩陣,n 行 m 列
ndarray.size數組元素的總個數,相當于 .shape 中 n*m 的值
ndarray.dtypendarray 對象的元素類型
ndarray.itemsizendarray 對象中每個元素的大小,以字節為單位
ndarray.flagsndarray 對象的內存信息
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.ndim)   #數組的維數
print(a.shape)
a.shape = (3,2) #調整數組大小
print(a.shape)
print(a)
a=a.reshape(1,6) #調整數組大小
print(a)

運行結果:
2
(2, 3)
(3, 2)
[[1 2]
[3 4]
[5 6]]
[[1 2 3 4 5 6]]

二.創建NumPy數組

python的numpy。1.調用 NumPy 的 array 函數,numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0),參數說明如下:

名稱描述
object數組或嵌套的數列
dtype數組元素的數據類型(可選)
copy數組是否需要復制(可選)
order創建數組的樣式,C為行方向,F為列方向,A為任意方向(默認)
subok默認返回一個和基類類型一致的數組
ndmin指定生成數組的最小維度
import numpy as np 
a = np.array([1,2,3])  
print (a)

運行結果:
[1 2 3]

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print (a)

運行結果:
[[1 2 3]
[4 5 6]
[7 8 9]]

import numpy as np
a = np.array([1,  2,  3], dtype =float)
print (a)

numpy.array、運行結果:
[1. 2. 3.]

2.numpy.empty 方法用來創建一個指定形狀(shape)、數據類型(dtype)且未初始化的數組:numpy.empty(shape, dtype = float, order = ‘C’)

import numpy as np
a = np.empty([2,2], dtype = 'i1')
print (a)   #結果為隨機數,因為數組沒有初始化

運行結果:
[[ -1 -1]
[ -1 127]]

3.numpy.zeros,創建指定大小的數組,數組元素以 0 來填充:numpy.zeros(shape, dtype = float, order = ‘C’),有"C"和"F"兩個選項,分別代表,行優先和列優先,在計算機內存中的存儲元素的順序。

import numpy as np
a = np.zeros((5), dtype=np.int) #整型
print(a)
b = np.zeros((2, 2), dtype=[('x', 'complex'), ('y', 'float')]) #自定義類型
print(b)

運行結果:
[0 0 0 0 0]
[[(0.+0.j, 0.) (0.+0.j, 0.)]
[(0.+0.j, 0.) (0.+0.j, 0.)]]

4.numpy.ones方法創建指定形狀的數組,數組元素以 1 來填充:numpy.ones(shape, dtype = None, order = ‘C’)

import numpy as np
a = np.ones(6)# 默認浮點型
print(a)
b = np.ones([3, 2], dtype='i4')# 自定義類型
print(b)

運行結果:
[1. 1. 1. 1. 1. 1.]
[[1 1]
[1 1]
[1 1]]

5.numpy.asarray(a, dtype = None, order = None),a可以是列表, 列表的元組, 元組, 元組的元組, 元組的列表,多維數組等,dtype表示數據類型(可選)。

import numpy as np
print(np.asarray([1,2,3,4,5]))#將列表轉換為 ndarray
print(np.asarray((1,2,3,4,5)))#將元組轉換為 ndarray

運行結果:
[1 2 3 4 5]
[1 2 3 4 5]

6.numpy.frombuffer 用于實現動態數組,接受 buffer 輸入參數,以流的形式讀入轉化成 ndarray 對象。
numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0),buffer可以是任意對象,會以流的形式讀入,dtype返回數組的數據類型(可選),count 讀取的數據數量,默認為-1,讀取所有數據,offset讀取的起始位置,默認為0。

import numpy as np
a = b'Hello World'
a = np.frombuffer(a, dtype =  'S1')
print (a)

運行結果:
[b’H’ b’e’ b’l’ b’l’ b’o’ b’ ’ b’W’ b’o’ b’r’ b’l’ b’d’]
7.numpy.fromiter(iterable, dtype, count=-1)方法從可迭代對象中建立 ndarray 對象,返回一維數組,iterable表示可迭代對象dtype 表示返回數組的數據類型,count讀取的數據數量,默認為-1,讀取所有數據。

import numpy as np
list = range(8) #創建列表對象
it = iter(list) #迭代器
a = np.fromiter(it, dtype='i1')
print(a)

運行結果:
[0 1 2 3 4 5 6 7]

8.numpy.arange(start, stop, step, dtype),根據 start 與 stop 指定的范圍以及 step 設定的步長,生成一個 ndarray,start 起始值,默認為0,stop終止值(不包含這個值),step步長默認為1。

import numpy as np
a = np.arange(1,100,30,dtype=float)
print (a)

運行結果:
[ 1. 31. 61. 91.]
9.np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None),函數用于創建一個一維數組,數組是一個等差數列構成的,start為序列的起始值,stop為序列的終止值(如果endpoint為true該值包含于數列中)num 為要生成的等步長的樣本數量,默認為50,endpoint 該值為 true 時,數列中中包含stop值,反之不包含,(默認是True)retstep 如果為 True 時,生成的數組中會顯示間距,反之不顯示。

import numpy as np
a = np.linspace(1, 20, 10, endpoint=False)
print(a)

運行結果:
[ 1. 2.9 4.8 6.7 8.6 10.5 12.4 14.3 16.2 18.1]

10.np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None) 函數用于創建一個于等比數列,start 序列的起始值為:base **start,stop 序列的終止值為:base ** stop,如果endpoint為true,該值包含于數列中,num為要生成的等步長的樣本數量,默認為50,endpoint 該值為 true 時,數列中中包含stop值,反之不包含,默認是True,base是對數 log 的底數,dtype 為 ndarray 的數據類型。

import numpy as np
a = np.logspace(0,9,10,base=2)
print (a)

運行結果:
[ 1. 2. 4. 8. 16. 32. 64. 128. 256. 512.]

三.數據類型對象

numpy.dtype(object, align, copy),object 要轉換為的數據類型對象,align 如果為 true,填充字段使其類似的結構體,copy 復制 dtype 對象 ,如果為 false,則是對內置數據類型對象的引用。

import numpy as np
# 'i1' 表示 int8
a = np.dtype('i1')
print(a)

運行結果:int8

import numpy as np
information = np.dtype([('height', 'i2'), ('weight', 'f4')])
a = np.array([(180.5, 67),(185.9, 75)], dtype =information)
print(a)

運行結果:(數據類型轉換為information的數據類型)
[(180, 67.) (185, 75.)]

四.索引

1.slice 函數

import numpy as np
a = np.arange(10)   #[0 1 2 3 4 5 6 7 8 9]
s = slice(2, 9, 3)  # 索引從2開始到索引9停止,間隔為3
print(a[s])

運行結果:[2 5 8]

2.冒號分隔切片參數 start:stop:step

import numpy as np
a = np.arange(10)  # [0 1 2 3 4 5 6 7 8 9]
b = a[5]           #返回與該索引相對應的單個元素
print(b)           #5
b=a[5:]            #表示從該索引開始以后的所有項都將被提取
print(b)           #[5 6 7 8 9]
b=a[5:8]           #提取兩個索引(不包括停止索引)之間的項
print(b)           #[5 6 7]

運行結果::
5
[5 6 7 8 9]
[5 6 7]

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

運行結果:
[[1 2 3]
[3 4 5]
[4 5 6]]
[[3 4 5]
[4 5 6]]
[[1 2 3]
[3 4 5]]
[[3 4 5]]

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

運行結果:
[[1 2 3]
[3 4 5]
[4 5 6]]
[3 4 5]
[[3 4 5]
[4 5 6]]
[4 5]
[4 5]

切片還可以包括省略號 …,來使選擇元組的長度與數組的維度相同。 如果在行位置使用省略號,它將返回包含行中元素的 ndarray。

import numpy as np
a = np.array([[1, 2, 3], [3, 4, 5], [4, 5, 6]])
print(a[..., 1])   # 第2列元素
print(a[1, ...])   # 第2行元素
print(a[..., 1:])  # 第2列及剩下的所有元素

運行結果:
[2 4 5]
[3 4 5]
[[2 3]
[4 5]
[5 6]]

3.布爾索引

import numpy as np
x = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
print(x)
print(x[x > 6])#數組中大于6的元素

運行結果:
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
[ 7 8 9 10 11]

4.花式索引

import numpy as np
x = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(x[[1,2]])#輸出了第一行和第二行
print (x[np.ix_([0,2],[3,1,2])])#輸出了x[0][3],x[0][1],x[0][2]#     x[2][3],x[2][1],x[2][2]

運行結果:
[[ 5 6 7 8]
[ 9 10 11 12]]
[[ 4 2 3]
[12 10 11]]

https://www.zydui.com/af0dcVG8CAwVRClIF.html
>

相关文章:

  • python的numpy
  • numpyarray
  • numpyarray的參數
  • numpy生成數組
  • python numpy array
  • numpy在線運行
  • python中numpy
  • numpy中文
  • Pytorch中的contiguous理解
  • 英雄聯盟陣營
  • python英雄對戰代碼_用 Python 分析了 1982 場英雄聯盟數據,開局前預測游戲對局勝負!...
  • 兩個嵌套for循環的執行順序
  • C# for循環的執行順序
  • C語言for循環語句的執行順序
  • Python編程PTA題解——字符轉換,提取
  • C練習記錄8——數字字符轉換成相對應的數值
  • 上古卷軸5python_如何評價游戲《上古卷軸5:天際》大型擴展MOD「突破天際」?...
  • 后羿 12 ‖ 對箭
  • 街霸對決最新服務器機柜銷售,街霸對決終于定檔,下個月就可以玩到,這次希望能抽到春麗!...
  • 暴雪風云錄·淺談暴雪的創業歷程
  • python獲取命令行參數 flags_命令行參數--tf.app.flags和python argparse
  • 機器中的幽靈:人工智能在金融市場的影響、風險及監管
  • 什么已配置?為什么在Mac上運行?
  • mdnsresponder_什么是mDNSResponder,為什么它可以在Mac上運行?
  • 趕集網入車行,縱向垂直看好市場
  • visual studio2019團隊資源管理器的使用
  • 被塵封的故事技能點bug_魔獸世界:獵人(射擊)新天賦與技能實測
  • 蘋果黑解升級后顯示無服務器,果粉怒了!升級iOS 12.1.3后,這款iPhone徹底無服務了...
  • 安裝C4D報錯 找不到libmmd.dll文件
  • c4d python_【C4D開發】C4D中的python生成器
  • C4DR19安裝的時候進度條卡到一半就不動了|折騰了4小時-【已解決】
  • lol8月21號服務器維護,《LOL》8月21日測試服 更新維護內容
  • caxa齒輪零件圖_齒輪油泵-各零件圖
  • 各職業藍色套裝屬性和掉落地點
  • 焦慮和迷茫的2020年!
  • 經典的網絡爆笑語錄
  • 關于程序員的59條搞笑但卻真實無比的編程語錄
  • 2019年5月22日 AY 程序員調侃語錄