Q1.Numpy_数组、数组查询、转置和轴对换、读写文件
安装地址:
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>
Q1.Numpy_数组、数组查询、转置和轴对换、读写文件相关推荐
- python转置_python数据分析类库系列Numpy之 数组转置和轴对换
转置是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作).数组不仅有transpose方法,还有一个特殊的T属性 arr = np.arange(15).reshape((3, 5)) ...
- numpy 转置_Numpy基础:数组转置和轴对换
转置(transpose)是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作).数组不仅有transpose方法,还有一个特殊的T属性. In[70]:arr=np.arange(15 ...
- python数组转置和换轴_Numpy基础:数组转置和轴对换
转置(transpose)是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作).数组不仅有transpose方法,还有一个特殊的T属性. In[70]:arr=np.arange(15 ...
- 《利用Python》进行数据分析:Numpy基础9 数组转置和轴对换
#coding=utf-8__author__ = 'andy'import numpy as np arr=np.arange(15).reshape((3,5)) print(arr)#数组转置, ...
- VBA中 各种数据类型的使用(自定义数据类型Type,数组,数据字典)、读写文件
目录 1.各种数据类型 2.VBA定义公共数组(全局都可以使用) 3.读写文件 SJIS 写入 UTF8 写入 读取 SJIS 读取 UTF-8 4.异常处理 5.忽略错误 6.其他常用1 7.其他常 ...
- php mongodb 子查询,MongoDB数组子查询elemMatch
MongoDB数组子查询elemMatch 在 MongoDB数组子查询elemMatch详解 语法 db_name.collection_name.find({field:{$elemMatch:{ ...
- 输入一个数字,在数组中查询是否存在,如果存在则显示其索引
输入一个数字,在数组中查询是否存在,如果存在则显示其索引 public class Demo12 {public static void main(String[] args) {Scanner sc ...
- Laravel 使用数组条件查询时 in和or 的用法
laravel给出了whereIn的用法: $users = DB::table('users')->whereIn('id', [1, 2, 3])->get(); 或者在闭包中使用wh ...
- 关于双数组Trie查询词典构造总结
原贴:http://www.firtex.org/firtex_forum/archiver/?tid-241.html FirteX开发论坛 » FirteX开发者专区 » 关于双数组Trie查询词 ...
最新文章
- 【运筹学】线性规划数学模型 ( 知识点回顾 | 可行解 | 最优解 | 阶梯型矩阵 | 阶梯型矩阵向量 | 基 | 基向量 | 基变量 | 非基变量 )
- Webbrowers控件的小技巧
- jquery插件---自动补全类插件
- ds1302模块 树莓派_(16)给树莓派B+ 安装一个实时时钟芯片DS1302
- react怎么存上一页_【React】存储全局数据
- 如何成为SSP offer收割机|独家经验分享!
- php静态地图api,静态图API | 百度地图API SDK
- 大数据基础篇(一):联机分析处理(OLAP) 与 联机事务处理(OLTP)
- Java生成随机数的4种方式,以后就用它了!
- zabbix 3.0 监控windows 部署
- dev Gridcontrol控件属性部分
- java string is empty_从源码分析java.lang.String.isEmpty()
- 春雷视频添加投屏功能解惑
- 计算机被覆盖文件怎么恢复,如何找回被覆盖的文件?恢复被覆盖文件的方法
- 苹果电脑系统如何读取移动硬盘数据?
- 01背包问题的填表方法
- SDK manger中只有几个配置????
- Mysql 获取成绩排序后的名次
- Flutter技术与实战(6)
- java常用代码架构示例