numpy基础

今天难得有闲暇时间,对numpy的基础进行以下梳理。

NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵。

创建数组:

使用列表创建数组,a=['a','b','c']

                                x = numpy.array(a) 

首先介绍以下numpy的索引和切片:

a = np.arange(24).reshape((2,3,4)) #创建两个三行四列的矩阵

a  =  [[[ 0  1  2  3]

          [ 4  5  6  7]

          [ 8  9 10 11]]

          [[12 13 14 15]

          [16 17 18 19]

          [20 21 22 23]]]

a[1,:]表示输出第1个矩阵的所有(矩阵编号从0开始),所以此处a[1,:]=[[12 13 14 15]
                                                                                                               [16 17 18 19]
                                                                                                               [20 21 22 23]]

a[:,1]表示输出所有矩阵的第一行,a[:,1] = [[ 4  5  6  7]
                                                                    [16 17 18 19]]

a[:,0:2,1:3]表示输出所有矩阵的第0~2行的第1~3列(注意此处第2行与第3列取不到),a[:,0:2,1:3]=[[[ 1  2]

                                                                                                                                                            [ 5  6]]

                                                                                                                                                            [[13 14]

                                                                                                                                                            [17 18]]]

a[:,:,::2]表示输出所有矩阵所有行列步长为2的所有列(步长可以理解为每次增长的步数),a[:,:,::2]=[[[ 0  2]

                                                                                                                                                          [ 4  6]

                                                                                                                                                          [ 8 10]]

                                                                                                                                                          [[12 14]

                                                                                                                                                          [16 18]

                                                                                                                                                          [20 22]]]

names = np.array(['a','b','c','a','b','d','e']) #创建索引列

data = np.arange(28).reshape(7,4)

此时数据为下图这样

print(data[names == 'a'])输出索引为Bob的数据,输出结果为[[ 0  1  2  3]
                                                         [12 13 14 15]]

可以结合切片,例如print(data[name=='a'],::2),输出结果为[[ 0  2]
                                                                                               [12 14]]

numpy的修改操作:

a = np.arange(24).reshape((2,3,4))
a[:,0:2] = [[1,2,3,4],[2,2,3,4]]

输出a的结果为:

[[[ 1  2  3  4]
  [ 2  2  3  4]
  [ 8  9 10 11]]

 [[ 1  2  3  4]
  [ 2  2  3  4]
  [20 21 22 23]]]

numpy的数据存储:

①.numpy提供了便捷的内部文件存取,将数据存为np专用的npy(二进制格式)或npz(压缩打包格式)格式

②.npy格式以二进制存储数据的,在二进制文件第一行以文本形式保存了数据的元信息(维度,数据类型),可以用二进制工具查看查看内容

③.npz文件以压缩打包文件存储,可以用压缩软件解压

例如:

x = numpy.array(['无敌','是','多么','寂寞'])

np.save('x.npy',x) # 存为.npy文件

y = np.arange(24).reshape(4,6)

np.savez("xy.npz", ar0 = a, ar1 = b)# 多个数组存入一个.npz压缩包

c = np.load('x.npy') # .npy文件读入数组

d = np.load("y.npz") # .npz压缩包读入

d["ar0"] # 单独输出数组

numpy 存储与读取csv文件:

存储:

只能存储ASCII编码格式,csv文件只能存储一维、二维数据,不能存储多维数据

np.savetxt(frame,array,fmt='%.18e',delimiter=None)

其中参数frame代表的含义为文件,可以是.gz等压缩文件,对大数据的存储比较有利,压缩后存取有利于节省资源

array代表存储文件的数组

delimiter代表分割字符串,默认为任何空格

fmt代表写入文件中每个字符串的格式,eg:%s(ASCII字符)

%d(整数)

%.2f(2位小数的浮点数)

%.18e(科学计数法)

读取:

np.loadtxt(frame,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)

frame代表文件、字符串或产生器,可以是.gz或bz2压缩文件

dtype代表数据类型,可选,代表CSV的字符串以什么数据类型读入数组中,默认np.float

delimiter代表分割字符串,默认是任何空格

skiprows代表跳过前X行,一般跳过第一行表头

usecols代表读取指定的列,索引,原组类型

unpack 如果为True,读入属性将分别写入不同数组变量,如果未False读入数据只写入一个数组变量,默认False

猜你喜欢

转载自blog.csdn.net/Mr_wuliboy/article/details/81383217
今日推荐