您好,登錄后才能下訂單哦!
這篇文章主要講解了“Numpy生成ndarray的方法是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Numpy生成ndarray的方法是什么”吧!
Numpy是Python開源的科學計算工具包,是高級的數值編程工具
強大的N維數組對象:ndarray
可以對數組結構數據進行運算(不用遍歷循環)
有隨機數、線性代數、傅里葉變換等功能
推薦使用anaconda,里面集成了許多常用的庫,并且在配置環境時更容易上手。
下載地址:https://www.anaconda.com/download/
方法一:安裝anaconda后,numpy是可以直接使用的,無需二次安裝。
方法二:沒有安裝anaconda可以使用pip install numpy
安裝。
方法一:安裝anaconda后,jupyter notebooks是可以直接使用的,無需二次安裝。
方法二:沒有安裝anaconda可以使用pip install jupyter
安裝。
推薦使用from numpy import np
不建議使用from numpy import *
, 因為numpy中包含了大量與Python內建函數重名的函數。
可以使用array生成數組
舉個栗子:
import numpy as np
ar = np.array([[1,2,3,4],[1,2,3,4]])
print(ar, type(ar))
>>>
[[1 2 3 4]
[1 2 3 4]] <class 'numpy.ndarray'>
除了np.array之外還有其他函數可以創建新數組,這里列出常用的幾個:
arange # python range的數組版
asarray # 將輸入轉換為ndarray
ones # 根據給定的形狀和類型生成全1的數組
ones_like # 根據給定的數組生成形狀一樣的全1的數組
zeros # 根據給定的形狀和類型生成全0的數組
zeros_like # 根據給定的數組生成形狀一樣的全1的數組
eye # 生成一個N*N的特征矩陣(對角線為1,其余為0)
linspance # 返回在間隔[開始,停止]上計算的num個均勻間隔的樣本
這里以zeros,zeros_like以及linspance分別舉例:
arr = np.zeros((3,5))
print(arr)
>>>
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
s = np.array([list(range(10)),list(range(10,20))])
print(s)
print(np.zeros_like(s))
>>>
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]]
[[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]]
print(np.linspace(10,20,num = 21)) #在10,21之間生成
print(np.linspace(10,20,num = 21, endpoint = False)) #endpoint默認為True,為False時不包含左邊的值
print(np.linspace(10,20,num = 21, retstep = True))# restep顯示步長
>>>
[10. 10.5 11. 11.5 12. 12.5 13. 13.5 14. 14.5 15. 15.5 16. 16.5
17. 17.5 18. 18.5 19. 19.5 20. ]
[10. 10.47619048 10.95238095 11.42857143 11.9047619 12.38095238
12.85714286 13.33333333 13.80952381 14.28571429 14.76190476 15.23809524
15.71428571 16.19047619 16.66666667 17.14285714 17.61904762 18.0952381
18.57142857 19.04761905 19.52380952]
(array([10. , 10.5, 11. , 11.5, 12. , 12.5, 13. , 13.5, 14. , 14.5, 15. ,
15.5, 16. , 16.5, 17. , 17.5, 18. , 18.5, 19. , 19.5, 20. ]), 0.5)
這里除了常用的幾個生成數組的函數外,列舉一些常用的方法:
import numpy as np
ar = np.array([[1,2,3,4],[1,2,3,4]])
print(ar, type(ar))
print(ar.ndim)#返回數組的維度的個數
print(ar.shape)#數組的維度,返回幾行幾列
print(ar.size)#數組元素的個數
print(ar.dtype)#元素的類型
print(ar.itemsize)#數組中元素的大小
>>>
[[1 2 3 4]
[1 2 3 4]] <class 'numpy.ndarray'>
2
(2, 4)
8
int64
8
.T是轉置函數,轉置函數對一維數組無影響
# .T
import numpy as np
ar1 = np.arange(10)
ar2 = np.zeros((2,5))
print(ar1.T)
print(ar2.T)#轉置函數
>>>
[0 1 2 3 4 5 6 7 8 9]
[[0. 0.]
[0. 0.]
[0. 0.]
[0. 0.]
[0. 0.]]
.reshape(),直接更改數組的形狀,但更改前后數組元素個數必須相同
ar1 = np.arange(10)
print(ar1.reshape(2,5))
print(np.reshape(np.arange(16),(2,8)))
>>>
[[0 1 2 3 4]
[5 6 7 8 9]]
[[ 0 1 2 3 4 5 6 7]
[ 8 9 10 11 12 13 14 15]]
.resize()
print(np.resize(np.arange(16),(3,5))) # resize當后面的數組元素個數小于前面生成的數量時,按照順序迭代
print(np.resize(np.arange(12),(3,5))) # resize當后面的數組元素個數大于前面的生成的數量,則隨機填充
>>>
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 0 1 2]]
和python中的深淺拷貝類似:Python | Python學習之深淺拷貝
.astype()可以將數組中元素的類型進行轉化,在numpy中元素類型有以下幾種(太多了就不都寫了):
int8, uint8 #有符號和無符號的8整位整數
int16, uint16 #有符號和無符號的16整位整數
int32, uint32 #有符號和無符號的32整位整數
int64, uint64 #有符號和無符號的64整位整數
float16 #半精度
float32 #單精度
float64 #雙精度
bool #布爾
.....
舉個類型轉換的栗子:
ar1 = np.arange(10,dtype=float)
ar2 = ar1.astype(np.int64)
print(ar1,ar2)
>>>
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.] [0 1 2 3 4 5 6 7 8 9]
數組的堆疊有hstack(),vstack()以及stack(),下面分別舉例:
a = np.arange(10)
b = np.arange(10,20)
print(ar1,ar2)
# 橫向鏈接
print(np.hstack((a,b)))
# 豎向鏈接
a = np.array([[1],[2],[3]])
b = np.array([['a'],['b'],['c']])
print(np.vstack((a,b)))
# 任意堆疊
a = np.arange(10)
b = np.arange(10,20)
print(np.stack((a,b),axis=1)) # 豎向堆疊
print(np.stack((a,b))) # 橫向堆疊
>>>>
[0 1 2 3 4 5 6 7 8 9] [10 11 12 13 14 15 16 17 18 19]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
[['1']
['2']
['3']
['a']
['b']
['c']]
[[ 0 10]
[ 1 11]
[ 2 12]
[ 3 13]
[ 4 14]
[ 5 15]
[ 6 16]
[ 7 17]
[ 8 18]
[ 9 19]]
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]]
數組拆分同樣分為橫向拆分和豎向拆分。
# 數組拆分
ar = np.arange(16).reshape(4,4)
print(ar)
print(np.hsplit(ar,2)) #縱向拆分
print(np.vsplit(ar,2)) #橫向拆分
>>>
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
[array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]), array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])]
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])]
這里的計算函數與Python中的計算函數用法相同,這里不再過多論述。
#計算函數
np.mean() #求平均值
np.max() #最大值
np.min() #最小值
np.gtd() #標準差
np.var() #方差
np.sum() # 其中參數axis=0按列求和axis=1按行求和
感謝各位的閱讀,以上就是“Numpy生成ndarray的方法是什么”的內容了,經過本文的學習后,相信大家對Numpy生成ndarray的方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。