對於習慣使用了matlab的使用者而言,學習numpy這個python工具包付出的成本應該是不大的。
numpy的基本的object是多維陣列,是乙個有同樣型別的數字等構成的一張**,能夠通過元組進行索引。本篇主要列出numpy中最經常使用的一些操作。
1,ndarray 型別的一些屬性
>>> from numpy import *
>>> a=array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>>
以上給出了怎麼樣初始化乙個numpy 陣列。這個陣列的型別,維度,包括元素的個數,元素型別。資料等都能夠通過其對應的屬性來得到
# 元素型別 ndarray.dtype
>>> a.dtype
dtype('int64')
>>>
# 維度 ndarray.shape
>>> a.shape
(2, 3)
#包括元素的個數 ndarray.size
>>> a.size
6
2。建立自己定義大小的陣列。改變陣列的shape
預設系統型別
>>> a=zeros((3,4))
>>> a
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
初始化資料的型別
>>> a=ones((5,4),dtype=int64)
>>> a
array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]])
>>> a.dtype
dtype('int64')
改變陣列的shape reshape函式
>>> a=arange(15)
>>> a
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> a.reshape((5,3))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
技巧:對於reshape這個函式,能夠僅僅指定多少行,或者僅僅指定多少列。剩下的工作由這個函式提我們來做。提高操作的靈活性。
>>> a.reshape((5,:-1))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
>>> a.reshape((-1,5))
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
3,陣列索引
1)通過指定元組來進行索引
>>> a=floor(10*random.random((5,4)))
>>> a
array([[ 4., 6., 4., 9.],
[ 4., 7., 2., 1.],
[ 4., 9., 7., 3.],
[ 5., 4., 6., 0.],
[ 4., 3., 2., 9.]])
>>> a[(1,1)]
7.0>>> a[(3,2)]
6.0
2)一次索引多個元素
索引出多行,能夠將下標存放在乙個array裡
>>> index=array([1,3,4]) #要索引1,3,4行
>>> a[index]
array([[ 4., 7., 2., 1.],
[ 5., 4., 6., 0.],
[ 4., 3., 2., 9.]])
>>> index=array([[1,2],[1,3]])
>>> b=a[index]
>>> b
array([[[ 4., 7., 2., 1.],
[ 4., 9., 7., 3.]],
[[ 4., 7., 2., 1.],
[ 5., 4., 6., 0.]]])
>>> b.shape
(2, 2, 4)
以上操作都是對一行進行索引的。那麼怎麼去索引到第幾行。第幾列呢
>>> i=array([0,1,2,3])
>>> j=array([3,2,1,0])
>>> a[i,j]
array([ 9., 2., 9., 5.])
返回的是 乙個一維矩陣。行存放在i 中。列存放在j中
如果要將返回的元素存放在2*2的矩陣中
>>> i=array([[0,1],[2,3]])
>>> j=array([[3,2],[2,1]])
>>> a[i,j]
array([[ 9., 2.],
[ 7., 4.]]
同一時候還支援 下面幾種索引方式。與matlab相似
>>> a[:,1]
array([ 6., 7., 9., 4., 3.])
>>> a[:,3]
array([ 9., 1., 3., 0., 9.])
>>> a[1,:]
array([ 4., 7., 2., 1.])
>>> a[:,1:3]
array([[ 6., 4.],
[ 7., 2.],
[ 9., 7.],
[ 4., 6.],
[ 3., 2.]])
3,矩陣算術運算
>>> a
array([[ 4., 6., 4., 9.],
[ 4., 7., 2., 1.],
[ 4., 9., 7., 3.],
[ 5., 4., 6., 0.],
[ 4., 3., 2., 9.]])
>>> a.sum()
93.0
>>> a.sum(axis=0) #行相加
array([ 21., 29., 21., 22.])
>>> a.sum(axis=1) #列相加
array([ 23., 14., 23., 15., 18.])
>>> a.min()
0.0>>> a.min(axis=0)
array([ 4., 3., 2., 0.])
>>> a.min(axis=1)
array([ 4., 1., 3., 0., 2.])
>>> a.max()
9.0>>> a.max(axis=0)
array([ 5., 9., 7., 9.])
>>> a.max(axis=1)
array([ 9., 7., 9., 6., 9.])
陣列之間算術運算
a+b; a-b
很多其它可參考:tentative numpy tutorial
numpy學習(一) numpy基礎
此文為學習 理解numpy,numpy簡單入門教程整理的學習筆記 numpy是乙個功能強大的python庫,主要用於對多維陣列執行計算。numpy這個詞 於兩個單詞 numerical和python。a np.array 0,1,2,3,4 a np.array 0,1,2,3,4 1,2,3,4,...
機器學習入門 numpy學習
numpy的基本使用 ndarray支援並行化運算 向量化運算 numpy內建了並行運算功能,當系統有多個核心時,做某種計算時,numpy會自動做平行計算 效率遠高於純python numpy底層使用c語言編寫,內部解除了gil 全域性直譯器鎖 其對陣列的操作速度不受python直譯器的限制,所以,...
NumPy入門基礎語法學習1
首先安裝好numpy以後,匯入numpy import numpy as np用如下方式建立一 個整型值列表 l list range 10 結果如下 結果如下 python 提供了幾種將資料儲存在有效的 固定型別的資料快取中的選 項。內建的陣列 array 模組 在 python 3.3 之後可用...