安装地址:
https://www.lfd.uci.edu/~gohlke/pythonlibs/
numpy,matplotlib都是在这里下载
import numpy as np
Part_1:Numpy数组,数组查询及转置和轴对换
1.1 创建各种类型的数组
arr1=np.array([1,2,3,4])
print('一维数组:\n',arr1)
arr2=np.array([[1,2,3],[4,5,6]])
print('二维数组:\n',arr2)
arr3=np.array([[[[1,2,3,4],[5,6,7,8],[9,10,11,12]]]])
print('四维数组:\n',arr3)
arr4=np.array([1,2,3,4],ndmin=3)
print("三维数组:\n",arr4)
arr5=np.array([1,2,3.4],dtype=complex)
print('复数数组:\n',arr5)
一维数组:
[1 2 3 4]
二维数组:
[[1 2 3]
[4 5 6]]
四维数组:
[[[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]]]
三维数组:
[[[1 2 3 4]]]
复数数组:
[1. +0.j 2. +0.j 3.4+0.j]
1.2 数组属性查询
1.2.1 数组维度
print('arr3数组维度:\n',arr3.ndim)
arr3数组维度:
4
1.2.2 数组形状
print('arr3数组形状:\n',arr3.shape)
arr3数组形状:
(1, 1, 3, 4)
shape属性的应用 将arr2由原2行3列数组调整为3行2列
arr2=np.array([[1,2,3],[4,5,6]])
print('二维数组:\n',arr2)
arr2.shape=(3,2)
print("arr2变为3行2列后的数组为:\n",arr2)
二维数组:
[[1 2 3]
[4 5 6]]
arr2变为3行2列后的数组为:
[[1 2]
[3 4]
[5 6]]
1.2.3 数组元素的总数
print('arr3数组元素的总数:\n',arr3.size)
arr3数组元素的总数:
12
1.2.4 数组的数据类型
print('arr5元素的数据类型:\n',arr5.dtype)
arr5元素的数据类型:
complex128
1.2.5 数组中每个元素的大小
arr5=np.array([1,2,3.4],dtype=complex)
print('复数数组:\n',arr5)
print("arr5数组中每个元素的大小:\n",arr5.itemsize)
复数数组:
[1. +0.j 2. +0.j 3.4+0.j]
arr5数组中每个元素的大小:
16
1.2.6 数据类型转换
arr7=np.array([1.2,2.6,3.7,9.9])
print(arr7.dtype)
arr6=arr7.astype(np.int32)
print("转换后:\n",arr6.dtype)
float64
转换后:
int32
1.3 数组展平
数组名.ravel()
arr2=np.array([[1,2,3],[4,5,6]])
print('二维数组arr2:\n',arr2)
arr8=arr2.ravel()
print("展平后:\n",arr8)
二维数组arr2:
[[1 2 3]
[4 5 6]]
展平后:
[1 2 3 4 5 6]
1.4 数组转置和轴对换
transpose(),ndarray.T()函数
arr2=np.array([[1,2,3],[4,5,6]])
print('二维数组arr2:\n',arr2)
#arr3的3行4列转置成2行6列
print("转置成2行6列:\n",np.transpose(arr2))
二维数组arr2:
[[1 2 3]
[4 5 6]]
转置成2行6列:
[[1 4]
[2 5]
[3 6]]
1.4.1 翻转函数示例
arr = np.arange(10).reshape(2,5)
print('原数组:\n',arr)
原数组:
[[0 1 2 3 4]
[5 6 7 8 9]]
用transpose函数转置
print('transpose转置数组:\n')
print(np.transpose(arr))
transpose转置数组:
[[0 5]
[1 6]
[2 7]
[3 8]
[4 9]]
用ndarry.T转置
print('ndarry,T转置数组:\n')
print(arr.T)
ndarry,T转置数组:
[[0 5]
[1 6]
[2 7]
[3 8]
[4 9]]
用rollaxis函数
rollaxis()函数:可实现向后滚动特定的轴,直到一个特定的位置:numpy.rollaxis(arr,axis,start)
arr=np.arange(8).reshape(2,2,2)
print('原数组:\n',arr)
原数组:
[[[0 1]
[2 3]]
[[4 5]
[6 7]]]
#将轴2滚动到轴0(宽度到深度)
print('调用rollaxis函数:')
print(np.rollaxis(arr,2,1))
调用rollaxis函数:
[[[0 2]
[1 3]]
[[4 6]
[5 7]]]
用swapaxes函数
arr=np.arange(8).reshape(2,2,2)
print('原数组:\n',arr)
#现在交换轴0(深度方向)到轴2(宽度方向)
print('调用swapaxes函数后的数组:')
print(np.swapaxes(arr,2,0))
原数组:
[[[0 1]
[2 3]]
[[4 5]
[6 7]]]
调用swapaxes函数后的数组:
[[[0 4]
[2 6]]
[[1 5]
[3 7]]]
Part_2 : Numpy读写文件
2.1 numpy读文件
#创建一个元素范围为0-11的3行4列的数组,然后设置不同的参数,将该数组写入TXT和CSV文件
import numpy as np
arr = np.arange(12).reshape(3,4)
#fmt默认取%.18e(浮点数),分隔符默认是空格,写入保存在当前目录
np.savetxt('test5-1-1.txt',arr)
#写入的文件是十进制整数
np.savetxt('test5-1-2.txt',arr,fmt='%d',delimiter=',')
#在test5-1-3.txt文件头部和尾部都加#test5-1-3注释,写入的文件是字符串
np.savetxt('test5-1-3.txt',arr,fmt='%s',delimiter=',',header='test5-1-3',footer='test5-1-3')
#在test5-1-4.txt文件头部加##test5-1-4注释
np.savetxt('test5-1-4.txt',arr,fmt='%s',delimiter=',',header='test5-1-4',comments='##')
print("-------------------------------------")
#将arr数组保存为csv文件
np.savetxt('test5-1.csv',arr,fmt='%d',delimiter=',',header='test5-1')
arr_phone = np.array([['id','name','tel','email'],
[1,'李明',15996663527,'liming@163.com'],
[2,'王红',17823727539,'wangming@163.com'],
[3,'张某人',17769265666,'wangbagaozi@163.com']])
print(arr_phone)
#enconding后面跟utf-8,不然会出现中文乱码
np.savetxt('phone.csv',arr_phone,fmt='%s',delimiter=',',encoding='utf-8')
-------------------------------------
[['id' 'name' 'tel' 'email']
['1' '李明' '15996663527' 'liming@163.com']
['2' '王红' '17823727539' 'wangming@163.com']
['3' '张某人' '17769265666' 'wangbagaozi@163.com']]
2.2 numpy 写文件
#从test5-1-1.txt文件中读取数据
arr1=np.loadtxt('test5-1-1.txt')
print(arr1)
print("-------------------------------------")
#从test5-1-2.txt文件中读取数据
arr2=np.loadtxt('test5-1-2.txt',delimiter=',')
print(arr2)
print("-------------------------------------")
#从test5-1-3.txt文件中读取数据
arr3=np.loadtxt('test5-1-3.txt',dtype=np.int32,delimiter=',')
print(arr3)
print("-------------------------------------")
#从test5-1-4.txt文件中读取数据
arr4=np.loadtxt('test5-1-4.txt',delimiter=',')
print(arr4)
print("-------------------------------------")
#从csv文件中读取数据
arr5=np.loadtxt('test5-1.csv',delimiter=',')
arr6=np.loadtxt('phone.csv',dtype=np.str_,delimiter=',',encoding='utf-8')
print(arr5)
print(arr6)
[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]
-------------------------------------
[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]
-------------------------------------
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
-------------------------------------
[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]
-------------------------------------
[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]
[['id' 'name' 'tel' 'email']
['1' '李明' '15996663527' 'liming@163.com']
['2' '王红' '17823727539' 'wangming@163.com']
['3' '张某人' '17769265666' 'wangbagaozi@163.com']]
2.3 numpy读写二进制格式文件
1.使用save()或savez()函数写二进制格式文件
格式:numpy.save(file,array)或numpy.savez(file,array)
file:文件名,以.npy为拓展名,压缩拓展名为.npz
array:数组变量
2.使用load()函数读取二进制文件
numpy.load(file) file:文件名,以.npy为拓展名,压缩拓展名为.npz
#示例:
#load和save函数
import numpy as np
arr1=np.arange(30).reshape(3,5,2)
print(arr1)
np.save('arr1.npy',arr1)
arr_a=np.load('arr1.npy')
print(arr_a)
#load和savez函数
arr2=np.arange(20).reshape(4,5)
np.savez('arr2.npz',arr1,arr2)
arr_b=np.load('arr2.npz')
print(arr_b)
[[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]
[ 8 9]]
[[10 11]
[12 13]
[14 15]
[16 17]
[18 19]]
[[20 21]
[22 23]
[24 25]
[26 27]
[28 29]]]
[[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]
[ 8 9]]
[[10 11]
[12 13]
[14 15]
[16 17]
[18 19]]
[[20 21]
[22 23]
[24 25]
[26 27]
[28 29]]]
<numpy.lib.npyio.NpzFile object at 0x0000022ABCDF4400>