广播机制
import numpy as np
b = np. array( [ 1 , 2 , 3 , 4 , 5 ] )
c = 1 + b
c
array([2, 3, 4, 5, 6])
d = 2 * b
b
array([1, 2, 3, 4, 5])
一 数组的生成方式
列表方式
li = [ 1 , 2 , 3 , 4 , 5 ]
a = np. array( li)
a
array([1, 2, 3, 4, 5])
内置方法 默认浮点数
np. zeros( 5 )
array([0., 0., 0., 0., 0.])
np. ones( 5 )
array([1., 1., 1., 1., 1.])
指定数据类型 datype
np. ones( 5 , dtype= 'int' )
array([1, 1, 1, 1, 1])
np. ones( 5 , dtype= 'bool' )
array([ True, True, True, True, True])
指定填充值 fill
a = np. ones( 5 )
a. fill( 5 )
a
array([5., 5., 5., 5., 5.])
a. fill( 3.5 )
a
array([3.5, 3.5, 3.5, 3.5, 3.5])
a = [ 1 , 2 , 3 , 4 , 5 , 6 ]
a = np. array( a)
a = a. astype( 'float' )
a
array([1., 2., 3., 4., 5., 6.])
生成等差数列
a = np. arange( 1 , 10 )
a
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
a = np. arange( 1 , 10 , 2 )
a
array([1, 3, 5, 7, 9])
a = np. linspace( 1 , 10 , 11 )
a
array([ 1. , 1.9, 2.8, 3.7, 4.6, 5.5, 6.4, 7.3, 8.2, 9.1, 10. ])
生成随机数组
a = np. random. rand( 10 )
a
array([0.13947687, 0.65462116, 0.81451741, 0.55057774, 0.41840527,
0.17633818, 0.52725956, 0.60188694, 0.11878766, 0.59086905])
a = np. random. randint( 1 , 10 )
a
8
a = np. random. randn( 10 )
a
array([ 0.8226025 , 1.28407151, 0.58721396, -0.51081168, -1.87262738,
-0.80944086, -0.89137566, -0.56553122, 0.72389785, 1.1288713 ])
a = np. random. randint( 1 , 100 , 10 )
a
array([38, 84, 67, 92, 90, 42, 33, 89, 79, 41])
查看类型
type ( a)
numpy.ndarray
a. dtype
dtype('int64')
a. shape
(10,)
a. size
10
a. ndim
1
索引与切片
a
array([38, 84, 67, 92, 90, 42, 33, 89, 79, 41])
a[ 0 ]
38
a[ 0 ] = 50
a
array([50, 84, 67, 92, 90, 42, 33, 89, 79, 41])
a[ 2 : 6 ]
array([67, 92, 90, 42])
a[ 2 : - 3 ]
array([67, 92, 90, 42, 33])
a[ - 6 : 6 ]
array([90, 42])
a[ 2 : ]
array([67, 92, 90, 42, 33, 89, 79, 41])
a[ - 4 : ]
array([33, 89, 79, 41])
a[ : : 2 ]
array([50, 67, 90, 33, 79])
累计票房
a = [ 21000 , 21030 , 21040 , 21100 , 21130 , 21160 ]
a = np. array( a)
b = a[ : - 1 ]
c = a[ 1 : ]
b, c
(array([21000, 21030, 21040, 21100, 21130]),
array([21030, 21040, 21100, 21130, 21160]))
c- b
array([30, 10, 60, 30, 30])
多维数组
a = np. array( [ [ 1 , 2 , 3 , 4 ] , [ 4 , 5 , 6 , 7 ] , [ 2 , 3 , 4 , 1 ] ] )
a
array([[1, 2, 3, 4],
[4, 5, 6, 7],
[2, 3, 4, 1]])
a. size , a. shape, a. ndim
(12, (3, 4), 2)
a[ 1 , 2 ]
6
a[ 1 , 2 ] = 30
a
array([[ 1, 2, 3, 4],
[ 4, 5, 30, 7],
[ 2, 3, 4, 1]])
a[ 1 ]
array([ 4, 5, 30, 7])
a[ : , 1 ]
array([2, 5, 3])
a[ 0 : 2 , 1 : 3 ]
array([[ 2, 3],
[ 5, 30]])
a[ 1 , 1 : 3 ]
array([ 5, 30])
a[ 1 : 2 , 1 : 3 ]
array([[ 5, 30]])
a[ : , : : 2 ]
array([[ 1, 3],
[ 4, 30],
[ 2, 4]])
b= a
b
array([[ 1, 2, 3, 4],
[ 4, 5, 30, 7],
[ 2, 3, 4, 1]])
b[ 2 : , 3 : ] = 88
a
array([[ 1, 2, 3, 4],
[ 4, 5, 30, 7],
[ 2, 3, 4, 88]])
b = a. copy( )
a
array([[ 1, 2, 3, 4],
[ 4, 5, 30, 7],
[ 2, 3, 4, 88]])
b[ 2 : , 3 : ] = 99
a
array([[ 1, 2, 3, 4],
[ 4, 5, 30, 7],
[ 2, 3, 4, 88]])
花式索引 返回一个对象的复制而非引用
index = [ 0 , 3 , - 1 ]
a = np. arange( 0 , 100 , 20 )
a
array([ 0, 20, 40, 60, 80])
a[ index]
array([ 0, 60, 80])
mask = np. array( [ 1 , 0 , 3 , 0 , 1 ] , dtype= 'bool' )
mask
array([ True, False, True, False, True])
a[ mask]
array([ 0, 40, 80])
a = np. array( [ [ 1 , 2 , 22 , 4 , 5 ] , [ 1 , 23 , 3 , 12 , 5 ] , [ 1 , 61 , 3 , 4 , 5 ] , [ 1 , 11 , 3 , 4 , 5 ] , [ 1 , 2 , 3 , 4 , 5 ] ] )
a
array([[ 1, 2, 22, 4, 5],
[ 1, 23, 3, 12, 5],
[ 1, 61, 3, 4, 5],
[ 1, 11, 3, 4, 5],
[ 1, 2, 3, 4, 5]])
mask = [ ( 0 , 1 , 3 ) , ( 0 , 1 , 2 ) ]
a[ mask]
/Users/lama/miniconda3/envs/Sci/lib/python3.6/site-packages/ipykernel_launcher.py:2: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
array([ 1, 23, 3])
a[ 2 : , [ 1 , 2 , 3 ] ]
array([[61, 3, 4],
[11, 3, 4],
[ 2, 3, 4]])
mask = np. array( [ 1 , 0 , 1 , 1 , 0 ] , dtype= bool )
a[ mask, 1 ]
array([ 2, 61, 11])
a[ : 3 ]
array([[ 1, 2, 22, 4, 5],
[ 1, 23, 3, 12, 5],
[ 1, 61, 3, 4, 5]])
where 语句判断 条件
a = np. array( [ 1 , 0 , 10 , 12 , 11 ] )
a> 10
array([False, False, False, True, True])
a[ a> 10 ]
array([12, 11])
np. where( a> 10 )
(array([3, 4]),)
a[ np. where( a> 10 ) ]
array([12, 11])
数据类型转换
np. array( [ 1 , - 2 , 3 , 4.5 ] , dtype= float )
array([ 1. , -2. , 3. , 4.5])
asarray(obj, type)
a = np. array( [ 1 , 2 , 3 , 4 , 5 , 6 ] )
b = np. asarray( a, dtype= float )
b
array([1., 2., 3., 4., 5., 6.])
b[ 0 ] = 0.3
b, a
(array([0.3, 2. , 3. , 4. , 5. , 6. ]), array([1, 2, 3, 4, 5, 6]))
astype(type)
a. astype( float )
array([1., 2., 3., 4., 5., 6.])
数组常用操作
a = [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' ]
b = np. array( [ 1000203 , 453229 , 3992039 , 340845 , 123432 , 34895 , 456098 , 456321 , 458965 , 1209321 , 380495 ] )
c = np. array( [ 7 , 8 , 6 , 6.5 , 8 , 9 , 7.7 , 8 , 9 , 8 , 7.5 ] )
d = np. array( [ 130 , 140 , 150 , 145 , 135 , 143 , 135 , 129 , 144 , 150 , 134 ] )
np. sort( b)
array([ 34895, 123432, 340845, 380495, 453229, 456098, 456321,
458965, 1000203, 1209321, 3992039])
order = np. argsort( b)
order
order[ 0 ]
5
a[ order[ 0 ] ]
'f'
np. sum ( b)
b. sum ( )
8905843
np. max ( b)
b. max ( )
3992039
np. min ( b)
b. min ( )
34895
np. mean( b)
b. mean( )
809622.0909090909
b. std( )
np. std( b)
1057380.8115000227
np. cov( b, c)
array([[ 1.2298596e+12, -6.6570125e+05],
[-6.6570125e+05, 8.6000000e-01]])
多维数组操作
数组形状
a = np. array( [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] )
a. shape= 2 , 4
a
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
b = a. reshape( 4 , 2 )
b
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
a
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
a. T
array([[1, 5],
[2, 6],
[3, 7],
[4, 8]])
a. transpose( )
array([[1, 5],
[2, 6],
[3, 7],
[4, 8]])
数组的连接
x = np. array( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 7 ] ] )
y = np. array( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 7 ] ] )
z = np. concatenate( ( x, y) , axis= 0 )
z
array([[1, 2, 3],
[4, 5, 7],
[1, 2, 3],
[4, 5, 7]])
z. shape
(4, 3)
z = np. concatenate( ( x, y) , axis= 1 )
z
array([[1, 2, 3, 1, 2, 3],
[4, 5, 7, 4, 5, 7]])
z. shape
(2, 6)
z = np. array( ( x, y) )
z
array([[[1, 2, 3],
[4, 5, 7]],
[[1, 2, 3],
[4, 5, 7]]])
np. vstack( ( x, y) )
array([[1, 2, 3],
[4, 5, 7],
[1, 2, 3],
[4, 5, 7]])
np. hstack( ( x, y) )
array([[1, 2, 3, 1, 2, 3],
[4, 5, 7, 4, 5, 7]])
z = np. dstack( ( x, y) )
z
array([[[1, 1],
[2, 2],
[3, 3]],
[[4, 4],
[5, 5],
[7, 7]]])
z. shape
(2, 3, 2)
其他内置函数
a = np. array( [ - 1 , 1 , 2 , - 3 ] )
a
array([-1, 1, 2, -3])
np. abs ( a)
array([1, 1, 2, 3])
np. exp( a)
array([0.36787944, 2.71828183, 7.3890561 , 0.04978707])
np. median( a)
0.0
np. cumsum( a)
array([-1, 0, 2, -1])