import numpy as np
生成np.array对象
a = np. array( [ 1 , 2 , 3 ] )
print ( type ( a) )
a
<class 'numpy.ndarray'>
array([1, 2, 3])
a1 = np. array( [ [ 1 ] , [ 2 ] , [ 3 ] ] )
a1
array([[1],
[2],
[3]])
b = np. array( [ [ 1 , 2 , 3 ] ,
[ 4 , 5 , 6 ] ,
[ 7 , 8 , 9 ] ] )
print ( b)
[[1 2 3]
[4 5 6]
[7 8 9]]
print ( b[ 0 ] )
[1 2 3]
print ( b[ 0 ] [ 0 ] )
1
sum函数
b. sum ( )
45
b. sum ( axis= 0 )
array([12, 15, 18])
b. sum ( axis= 1 )
array([ 6, 15, 24])
提取矩阵中指定位置的元素
b[ 0 : 2 ]
array([[1, 2, 3],
[4, 5, 6]])
A = np. array( [ [ 1 , 1 , 4 , 1 / 3 , 3 ] ,
[ 1 , 1 , 4 , 1 / 3 , 3 ] ,
[ 1 / 4 , 1 / 4 , 1 , 1 / 3 , 1 / 2 ] ,
[ 3 , 3 , 3 , 1 , 3 ] ,
[ 1 / 3 , 1 / 3 , 2 , 1 / 3 , 1 ] ] )
A[ 0 , 0 ]
1.0
A[ 1 , : ]
array([1. , 1. , 4. , 0.33333333, 3. ])
A[ 3 , : ]
array([3., 3., 3., 1., 3.])
A[ : , 0 ]
array([1. , 1. , 0.25 , 3. , 0.33333333])
A[ [ 1 , 3 ] , : ]
array([[1. , 1. , 4. , 0.33333333, 3. ],
[3. , 3. , 3. , 1. , 3. ]])
A[ : , [ 0 , 2 ] ]
array([[1. , 4. ],
[1. , 4. ],
[0.25 , 1. ],
[3. , 3. ],
[0.33333333, 2. ]])
A[ 0 : 4 : 2 , : ]
array([[1. , 1. , 4. , 0.33333333, 3. ],
[0.25 , 0.25 , 1. , 0.33333333, 0.5 ]])
A[ : , 1 : 4 : 3 ]
array([[1. ],
[1. ],
[0.25 ],
[3. ],
[0.33333333]])
A
array([[1. , 1. , 4. , 0.33333333, 3. ],
[1. , 1. , 4. , 0.33333333, 3. ],
[0.25 , 0.25 , 1. , 0.33333333, 0.5 ],
[3. , 3. , 3. , 1. , 3. ],
[0.33333333, 0.33333333, 2. , 0.33333333, 1. ]])
shape函数
A. shape
(5, 5)
type ( np. shape( A) )
tuple
( d, e) = A. shape
print ( d, e)
5 5
C = np. array( [ [ 1 , 2 , 5 ] ,
[ 2 , 3 , 5 ] ,
[ 3 , 4 , 5 ] ,
[ 2 , 3 , 6 ] ] )
C. shape
(4, 3)
C. shape[ 0 ]
4
C. shape[ 1 ]
3
tile函数(复制平铺)
np. tile( C, 2 )
array([[1, 2, 5, 1, 2, 5],
[2, 3, 5, 2, 3, 5],
[3, 4, 5, 3, 4, 5],
[2, 3, 6, 2, 3, 6]])
np. tile( C, ( 2 , 1 ) )
array([[1, 2, 5],
[2, 3, 5],
[3, 4, 5],
[2, 3, 6],
[1, 2, 5],
[2, 3, 5],
[3, 4, 5],
[2, 3, 6]])
np. tile( C, ( 2 , 3 ) )
array([[1, 2, 5, 1, 2, 5, 1, 2, 5],
[2, 3, 5, 2, 3, 5, 2, 3, 5],
[3, 4, 5, 3, 4, 5, 3, 4, 5],
[2, 3, 6, 2, 3, 6, 2, 3, 6],
[1, 2, 5, 1, 2, 5, 1, 2, 5],
[2, 3, 5, 2, 3, 5, 2, 3, 5],
[3, 4, 5, 3, 4, 5, 3, 4, 5],
[2, 3, 6, 2, 3, 6, 2, 3, 6]])
矩阵运算
A = np. array( [ [ 1 , 2 ] ,
[ 3 , 4 ] ] )
B = np. array( [ [ 1 , 0 ] ,
[ 1 , 1 ] ] )
A* B
array([[1, 0],
[3, 4]])
np. dot( A, B)
array([[3, 2],
[7, 4]])
np. linalg. inv( B)
array([[ 1., 0.],
[-1., 1.]])
np. dot( B, np. linalg. inv( B) )
array([[1., 0.],
[0., 1.]])
A/ B
C:\Users\18210\Anaconda3\lib\site-packages\ipykernel_launcher.py:1: RuntimeWarning: divide by zero encountered in true_divide
"""Entry point for launching an IPython kernel.
array([[ 1., inf],
[ 3., 4.]])
A* np. linalg. inv( B)
array([[ 1., 0.],
[-3., 4.]])
A* 2
array([[2, 4],
[6, 8]])
A/ 2
array([[0.5, 1. ],
[1.5, 2. ]])
A** 2
array([[ 1, 4],
[ 9, 16]], dtype=int32)
A* A
array([[ 1, 4],
[ 9, 16]])
np. dot( A, A)
array([[ 7, 10],
[15, 22]])
求特征值和特征向量
A = np. array( [ [ 1 , 2 , 3 ] ,
[ 2 , 2 , 1 ] ,
[ 2 , 0 , 3 ] ] )
np. linalg. eig( A)
(array([-1.31662479, 5.31662479, 2. ]),
array([[ 0.83643505, -0.63364028, -0.24077171],
[-0.38754123, -0.54703747, -0.84270097],
[-0.38754123, -0.54703747, 0.48154341]]))
a, b = eig( A)
print ( a)
print ( "***********" )
print ( b)
[-1.31662479 5.31662479 2. ]
***********
[[ 0.83643505 -0.63364028 -0.24077171]
[-0.38754123 -0.54703747 -0.84270097]
[-0.38754123 -0.54703747 0.48154341]]
X = np. array( [ 1 , 0 , 4 , - 3 , 0 , 0 , 0 , 8 , 6 ] )
非零元素
np. nonzero( X)
(array([0, 2, 3, 7, 8], dtype=int64),)
np. nonzero( X) [ 0 ]
array([0, 2, 3, 7, 8], dtype=int64)
np. nonzero( X) [ 0 ] [ 0 ]
0
np. nonzero( X) [ 0 ] [ 0 : 2 ]
array([0, 2], dtype=int64)
X = np. array( [ [ 1 , - 3 , 0 ] ,
[ 0 , 0 , 8 ] ,
[ 4 , 0 , 6 ] ] )
np. nonzero( X)
(array([0, 0, 1, 2, 2], dtype=int64), array([0, 1, 2, 0, 2], dtype=int64))
np. where( X> 0 )
(array([0, 1, 2, 2], dtype=int64), array([0, 2, 0, 2], dtype=int64))