4、numpy——創建數組


1、普通創建——np.array()

創建數組最簡單的方法就是使用array函數。它接收一切序列型的對象(包括其他數組),然后產生一個新的含有傳入數據的Numpy數組。

1 import numpy as np
2 a1 = np.array([1, 2, 3])
3 print(a1)
4 a2 = np.array([[1, 2, 3], [2, 3, 4]], dtype=np.float)
5 print(a2, a2.dtype, a2.shape)

 運行結果:

import numpy as np
a1 = np.array([1, 2, 3])
print(a1)
a2 = np.array([[1, 2, 3], [2, 3, 4]], dtype=np.float)
print(a2, a2.dtype, a2.shape)

 

2、內置方法——np.asarray()  np.fromiter()

  • numpy.asarray # 類似於numpy.array
  • numpy.fromiter # 此函數從任何可迭代對象構建一個ndarray對象,返回一個新的一維數組。

2.1 numpy.asarray

語法:

numpy.asarray(a, dtype = None, order = None)

 

參數:

參數 描述
a 任意形式的輸入參數,比如列表、列表的元組、元組、元組的元組、元組的列表
dtype 輸入出的數組類型,可選
order ‘C’為按行的 C 風格數組,’F’為按列的 Fortran 風格數組

 

 

 

 

 

2 x = [1, 2, 3]  # x是python的列表類型 不是數組
3 a1 = np.asarray(x)
4 print(a1)  # [1  2  3]
5 y = (4, 5, 6)  # y是python的元組類型
6 a2 = np.asarray(y, dtype=float, order='F')
7 print(a2)  # [4. 5. 6.]

 

2.2 numpy.formiter

語法:

numpy.fromiter(iterable, dtype, count = -1)

 

參數:

參數 描述
iterable 任何可迭代對象
dtype 返回數組的數據類型
count 需要讀取的數據數量,默認為-1,讀取所有數據

 

 

 

 

 

例子:

1 import numpy as np
2 x = range(5)
3 a = np.fromiter(x, float, 5)
4 print(a)

 

結果:

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

 

3 內置方法——np.arange()創建

語法:
numpy.arange(start, stop, step, dtype)
參數:
start    范圍的起始值,默認為0
stop    范圍的終止值(不包含)
step    兩個值的間隔,默認為1
dtype    返回ndarray的數據類型,如果沒有提供,則會使用輸入數據的類型。

 

例子:

import numpy as np
# 普通用法
a1 = np.arange(10)
#含起始點
a2 = np.arange(10, 20)
# 帶步長
a3 = np.arange(10, 20, 2)
# 倒着
a4 = np.arange(20, 10, -1)
print(a1, '\n', a2, '\n', a3, '\n', a4)

 

執行結果:

[0 1 2 3 4 5 6 7 8 9] 
 [10 11 12 13 14 15 16 17 18 19] 
 [10 12 14 16 18] 
 [20 19 18 17 16 15 14 13 12 11]

 

4、內置方法——等比等差創建

4.1 np.linspace (起始值,終止值,元素總數):創建一維等差數組。

語法:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

參數說明:

參數 描述
start 序列的起始值
stop 序列的終止值,如果endpointtrue,該值包含於數列中
num 要生成的等步長的樣本數量,默認為50
endpoint 該值為 ture 時,數列中中包含stop值,反之不包含,默認是True。
retstep 如果為 True 時,生成的數組中會顯示間距,反之不顯示。
dtype ndarray 的數據類型

 

 

 

 

 

 

 

例子:

1 import numpy as np
2 a1 = np.linspace(0, 10, 5)
3 print("等差數組:", a1)
4 a2 = np.linspace(0, 10, 5, retstep=True, dtype=np.int8)
5 print(a2)
6 結果:
7 等差數組: [ 0.   2.5  5.   7.5 10. ]
8 (array([ 0,  2,  5,  7, 10], dtype=int8), 2.5

 

4.2 np.logspace(起始值,終止值,元素總數):創建一維等比數組。

語法:

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

base 參數意思是取對數的時候 log 的下標。

參數 描述
start 序列的起始值為:base ** start
stop 序列的終止值為:base ** stop。如果endpointtrue,該值包含於數列中
num 要生成的等步長的樣本數量,默認為50
endpoint 該值為 ture 時,數列中中包含stop值,反之不包含,默認是True。
base 對數 log 的底數。
dtype ndarray 的數據類型

 

 

 

 

 

 

 

例子:

 1 import numpy as np
 2 # 默認底數是 10
 3 a = np.logspace(1.0,  2.0, num=10)
 4 print(a)
 5 # 將對數的底數設為2
 6 a = np.logspace(0, 9, 10, base=2)
 7 print(a)
 8 結果:
 9 [ 10.          12.91549665  16.68100537  21.5443469   27.82559402
10   35.93813664  46.41588834  59.94842503  77.42636827 100.        ]
11 [  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.]

 

5、內置方法創建(特殊構造)

5.1 np.zeros(shape, dtype=float, order='C'):創建一個全0數組,shape要以元組格式傳入

import numpy as np
a1 = np.zeros((3, 4), dtype=int)
print(a1)
a2 = np.zeros_like(a1)
print('副本:', a2)
# 結果:
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
副本: [[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]

 

5.2 np.ones(shape, dtype=None, order='C'):創建一個全1數組,shape要以元組格式傳入。

1 import numpy as np
2 a1 = np.ones((2, 3), dtype=int)
3 # 返回具有與給定數組相同的形狀和類型的數組
4 a2 = np.ones_like(a1)
5 print(a2)

 

結果:

[[1 1 1]
 [1 1 1]]

 

5.3 np.empty(shape, dtype=None, order='C'):創建一個擁有趨近0值的數組,shape要以元組格式傳入。

1 import numpy as np
2 x = np.empty((2, 3), dtype=int, order='C')
3 print(x)
4 '''
5 [[7209029 6422625 6619244]
6  [    100 6553673       0]]
7 '''

5.4 np.eye(N, M=None, k=0, dtype=float, order='C'):創建一個對角矩陣,N代表行,M代表列。其中有個參數k默認值為0,它代表偏移量,正1時向主對角線右上偏移1位,負1時向主對角線左下偏移1位。

1 import numpy as np
2 a1 = np.eye(3, 3, dtype=int)
3 print(a1)
4 # 對角線下移
5 a2 = np.eye(3, 3, k=-1, dtype=int)
6 print('*************************\n', a2)
7 # 對角線向上移
8 a3 = np.eye(3, 3, k=1, dtype=int)
9 print('*************************\n', a3)

 

結果:

[[1 0 0]
 [0 1 0]
 [0 0 1]]
*************************
 [[0 0 0]
 [1 0 0]
 [0 1 0]]
*************************
 [[0 1 0]
 [0 0 1]
 [0 0 0]]

 

5.5 np.full(shape, fill_value, dtype=None, order='C'):創建一個以fill_value進行填充的數組,fill_value為想要填充的值

 

import numpy as np
a1 = np.full((3, 3),fill_value=5)
print(a1)
#結果
[[5 5 5]
 [5 5 5]
 [5 5 5]]

 

6、從隨機函數創建

隨機生成數組需要考慮的因素:

  1. 數據范圍:區間,整數、小數
  2. 數據分布:均勻分布、正態分布、指定分布
  3. 數據形狀:size

常用的隨機函數

函數 解釋
rand(d0,d1,…) [0,1]均勻分布
randint(low,high,size) [low,high)整數均勻分布
choice(a,size,replace,p) 指定數組指定概率分布
randn(d0,d1,…) 標准正態分布

 

 [0,1]均勻分布

import numpy as np
a1 = np.random.rand(4, 4)
print(a1)
》》》
[[0.77052073 0.68006097 0.07924217 0.81588193]
 [0.99678088 0.3900633  0.64834814 0.62874627]
 [0.15473904 0.24785919 0.75724866 0.32946373]
 [0.99667109 0.12276489 0.26126159 0.36696264]] 0.7705207279750877

 

 [a,b)整數均勻分布

1 import numpy as np
2 a = np.random.randint(2, 5, (3, 3))
3 print(a)
4 >>>
5 [[3 4 2]
6  [4 2 2]
7  [2 4 4]]

指定數組指定概率分布

import numpy as np
a = np.random.choice([1, 2, 3, 4], size=(3, 4), replace=True, p=[0.1, 0.2, 0.3, 0.4])
print(a)
>>>
[[2 2 3 1]
 [4 4 4 3]
 [1 2 1 2]]

N(0,1)標准正態分布

1 import numpy as np
2 a = np.random.randn(4, 4)
3 print(a)
4 >>>
5 [[-1.94776705  1.82906205  0.45956222 -1.09130521]
6  [ 1.52936905 -2.38259868 -1.53460647  1.95028102]
7  [ 0.7148325   0.40825257  0.15732141 -0.45423096]
8  [-0.20530692  1.34386361  1.13883039 -0.14897777]]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM