numpy自动生成数组
1 np.arange(),类似于range,通过指定开始值,终值和步长来创建表示等差数列的一维数组,注意该函数和range一样结果不包含终值。
1
2
3
4
5
|
>>> np.arange( 10 ) array([ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]) >>> np.arange( 0 , 1 , 0.1 ) array([ 0. , 0.1 , 0.2 , 0.3 , 0.4 , 0.5 , 0.6 , 0.7 , 0.8 , 0.9 ]) >>> |
2 np.linspace()函数,与上面np.arange不同的是,该函数第三个参数指定的是元素个数,它表示给定起始值和终点值以及元素个数,生成一个一维的等差数列。含有参数endpoint布尔值,默认为True表示包含终值,设定为False表示不包含终值。
1
2
3
4
5
|
>>> np.linspace( 0 , 1 , 10 ) array([ 0. , 0.11111111 , 0.22222222 , 0.33333333 , 0.44444444 , 0.55555556 , 0.66666667 , 0.77777778 , 0.88888889 , 1. ]) >>> np.linspace( 0 , 1 , 10 ,endpoint = False ) array([ 0. , 0.1 , 0.2 , 0.3 , 0.4 , 0.5 , 0.6 , 0.7 , 0.8 , 0.9 ]) |
3 np.logspace,该函数与np.linspace类似,不过它生成的数组是等比数列,基数默认为10
1
2
3
|
>>> np.logspace( 0 , 4 , 5 ) array([ 1.00000000e + 00 , 1.00000000e + 01 , 1.00000000e + 02 , 1.00000000e + 03 , 1.00000000e + 04 ]) |
但是基数也可以改变,例如将基数base = 2,如下:
>>> np.logspace(0,3,5,base = 2)
array([ 1. , 1.68179283, 2.82842712, 4.75682846, 8. ])
上面表示,起点为2^0 = 1,终点为2^3 = 8,一共按照等比数列生成5个点,这样公比q = 2^(3/4)
4. np.zeros(),np.ones(),np.empty()可以创建指定的形状和类型数组,其中np.enpty()只分配数组所使用的内存,不对数据初始化起作用。
1
2
3
|
>>> np.empty(( 2 , 3 ),np.int32) array([[ 8078112 , 37431728 , 8078112 ], [ 47828800 , 47828712 , 10 ]]) |
注意上面创建的2*3的数组并没有被初始化。
1
2
3
4
5
6
7
8
9
10
11
|
>>> np.ones( 4 ) array([ 1. , 1. , 1. , 1. ]) >>> np.ones(( 2 , 3 )) array([[ 1. , 1. , 1. ], [ 1. , 1. , 1. ]]) >>> np.ones( 4 ,dtype = np. bool ) array([ True , True , True , True ], dtype = bool ) >>> np.zeros( 4 ,dtype = np. bool ) array([ False , False , False , False ], dtype = bool ) >>> np.zeros( 4 ) array([ 0. , 0. , 0. , 0. ]) |
np.full()函数可以生成初始化为指定值的数组
1
2
3
4
5
|
>> np.full( 4 ,np.pi) array([ 3.14159265 , 3.14159265 , 3.14159265 , 3.14159265 ]) >>> np.full(( 2 , 3 ),np.pi) array([[ 3.14159265 , 3.14159265 , 3.14159265 ], [ 3.14159265 , 3.14159265 , 3.14159265 ]]) |
此外np.zeros_like(),np.ones_like()等函数创建于参数形状相同的数组即np.zeros_like(a)与np.zeros(a.shape,dtype = a.type)相同
1
2
3
4
|
>>> a = np.arange( 10 ).reshape( 2 , 5 ) >>> np.zeros_like(a) array([[ 0 , 0 , 0 , 0 , 0 ], [ 0 , 0 , 0 , 0 , 0 ]]) |
5 np.fromfunction(),它可以从指定的函数中生成数组,第一个参数是函数名称,第二个参数是数组形状。
1
2
3
4
5
6
|
>>> np.fromfunction( lambda a,b:a = = b,( 3 , 3 )) array([[ True , False , False ], [ False , True , False ], [ False , False , True ]], dtype = bool ) >>> np.fromfunction( lambda i:i % 7 + 1 ,( 10 ,)) array([ 1. , 2. , 3. , 4. , 5. , 6. , 7. , 1. , 2. , 3. ]) |