numpy常用操作


numpyはndarrayとmatrixの2種類のデータを提供し、科学的な演算に非常に便利な演算ツールを提供しています.対照的にMATLABはマトリクス演算のサポートがより直感的で操作しやすいと思いますが、Python利用者としてnumpyを使いこなさないわけにはいきません.
numpyでは、同じ操作は多くの異なる方法を提供する可能性があり、具体的にどのように実現するかは完全に使用者の個人的な習慣である.私と同じ菜鳥には、最初から良い操作習慣を身につけたほうがいいと思います.
numpyの2次元配列はマトリクスの様々な機能をうまく実現でき、matrixよりも柔軟で、速度も速い(refer:numpyチュートリアル:マトリクスmatrixおよびその演算).そこで,両者が共通する場合,arrayを用いて実現することを選んだ.
以下の内容は主にnumpyのチュートリアルを学んだ後、私自身が普段の使用の中でよく出会うかもしれないいくつかの操作問題と結びつけてまとめて、自分で覚えやすいようにします.あまり使わない操作はともかく、忘れてから調べればいい.
numpy公式チュートリアル:https://docs.scipy.org/doc/numpy-dev/user/quickstart.htmlnumpy公式チュートリアル中国語翻訳:NumPyの詳細チュートリアル
1.配列および配列変形の作成
import numpy as np
#     
a = np.array([1,2,3,4,5,6])
print a
#    a.shape           
a.shape = (2,3)
print '    :'
print a
[1 2 3 4 5 6]
[[1 2 3]
 [4 5 6]]
a.ravel() #     
array([1, 2, 3, 4, 5, 6])

2.配列接合
A = np.floor(np.random.randn(2,3) * 10)
print 'A:
'
, A B = np.floor(np.random.randn(2,3) * 10) print 'B:
'
, B
A:
[[ -2.   3. -10.]
 [  5.   4.   7.]]
B:
[[-14.  -7.   3.]
 [ 10.   6.  -8.]]
#        
print '    :'
print np.vstack([A,B])
#        
print '    :'
print np.hstack([A,B])
    :
[[ -2.   3. -10.]
 [  5.   4.   7.]
 [-14.  -7.   3.]
 [ 10.   6.  -8.]]
    :
[[ -2.   3. -10. -14.  -7.   3.]
 [  5.   4.   7.  10.   6.  -8.]]

3.基本操作と基本演算
np.exp(2)
7.3890560989306504
np.exp2(2)
4.0
np.sqrt(4)
2.0
np.sin([2,3])
array([ 0.90929743,  0.14112001])
np.log(2)
0.69314718055994529
np.log10(2)
0.3010299956639812
np.log2(2)
1.0
np.max([1,2,3,4])
4

4.2 D配列完了マトリクス操作
A = np.array([[1, 2], [-1, 4]])
B = np.array([[2, 0], [3, 4]])
print '      :'
print A * B
print '    :'
print np.dot(A, B) #    A.dot(B)
      :
[[ 2  0]
 [-3 16]]
    
[[ 8  8]
 [10 16]]
#     
from numpy import linalg
#  A   
print 'A   :'
print A.transpose()

#  A    
print 'A    :'
print linalg.inv(A)

#         
eigenvalues, eigenvectors = linalg.eig(A)
print 'A     :'
print eigenvalues #    
print 'A      :'
print eigenvectors #     
A   :
[[ 1 -1]
 [ 2  4]]
A    :
[[ 0.66666667 -0.33333333]
 [ 0.16666667  0.16666667]]
A     :
[ 2.  3.]
A      :
[[-0.89442719 -0.70710678]
 [-0.4472136  -0.70710678]]