import numpy as np
NumPy提供了很多专门用来创建数组的函数
- arange
- linspace & logspace
- frombuffer,fromstring ,fromfile
#arange函数类似于python的range函数,通过指定开始值、终值和步长来创建一维数组
np.arange(1,2,0.1)
array([ 1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9])
np.arange(1,2,0.01)
array([ 1. , 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08,
1.09, 1.1 , 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17,
1.18, 1.19, 1.2 , 1.21, 1.22, 1.23, 1.24, 1.25, 1.26,
1.27, 1.28, 1.29, 1.3 , 1.31, 1.32, 1.33, 1.34, 1.35,
1.36, 1.37, 1.38, 1.39, 1.4 , 1.41, 1.42, 1.43, 1.44,
1.45, 1.46, 1.47, 1.48, 1.49, 1.5 , 1.51, 1.52, 1.53,
1.54, 1.55, 1.56, 1.57, 1.58, 1.59, 1.6 , 1.61, 1.62,
1.63, 1.64, 1.65, 1.66, 1.67, 1.68, 1.69, 1.7 , 1.71,
1.72, 1.73, 1.74, 1.75, 1.76, 1.77, 1.78, 1.79, 1.8 ,
1.81, 1.82, 1.83, 1.84, 1.85, 1.86, 1.87, 1.88, 1.89,
1.9 , 1.91, 1.92, 1.93, 1.94, 1.95, 1.96, 1.97, 1.98, 1.99])
#linspace函数通过指定(开始值,终值,元素个数)平均来创建一维数组,
#可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值:
np.linspace(1,2,11)
array([ 1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2. ])
#logspace函数和linspace类似,不过它创建等比数列
#下面的例子产生1(10^0)到100(10^2)、有20个元素的等比数列:
np.logspace(0,2,20)
array([ 1. , 1.27427499, 1.62377674, 2.06913808,
2.6366509 , 3.35981829, 4.2813324 , 5.45559478,
6.95192796, 8.8586679 , 11.28837892, 14.38449888,
18.32980711, 23.35721469, 29.76351442, 37.92690191,
48.32930239, 61.58482111, 78.47599704, 100. ])
a=np.array([1,2,3,4])
np.log10(a)
array([ 0. , 0.30103 , 0.47712125, 0.60205999])
#使用frombuffer, fromstring, fromfile等函数可以从字节序列创建数组
s='abcdefgh'
np.fromstring(s,dtype=np.int8)
array([ 97, 98, 99, 100, 101, 102, 103, 104], dtype=int8)
#如果从字符串s创建16bit的整数数组,那么两个相邻的字节就表示一个整数,
#把字节98和字节97当作一个16位的整数,它的值就是98*256+97 = 25185。
#可以看出内存中是以little endian(低位字节在前)方式保存数据的。
np.fromstring(s,dtype=np.int16)
array([25185, 25699, 26213, 26727], dtype=int16)
98*256+97
25185
np.fromstring(s,dtype=np.float)
array([ 8.54088322e+194])
def func(i):
return i%4+1
np.fromfunction(func,(10,)) #当要处理 X % Y时, 如果, X < Y 的话, 回传值就是 X 自己
array([ 1., 2., 3., 4., 1., 2., 3., 4., 1., 2.])
def func1(i,j):
return (i+1)*(j+1)
a=np.fromfunction(func1,(9,9))
a
array([[ 1., 2., 3., 4., 5., 6., 7., 8., 9.],
[ 2., 4., 6., 8., 10., 12., 14., 16., 18.],
[ 3., 6., 9., 12., 15., 18., 21., 24., 27.],
[ 4., 8., 12., 16., 20., 24., 28., 32., 36.],
[ 5., 10., 15., 20., 25., 30., 35., 40., 45.],
[ 6., 12., 18., 24., 30., 36., 42., 48., 54.],
[ 7., 14., 21., 28., 35., 42., 49., 56., 63.],
[ 8., 16., 24., 32., 40., 48., 56., 64., 72.],
[ 9., 18., 27., 36., 45., 54., 63., 72., 81.]])