python读取数据文件numpy(python中怎样读取文件中的数据)
在python中如何从二进制文件中读取信息?
你是指读入二进制文件吧?\x0d\x0a可以使用numpy.fromfile(),也可以使用open(filename, 'rb'),其中的'b'就是二进制的意思,然后使用文件类型的read方法,读取一些字节,再用struct.unpack()方法来解析二进制。\x0d\x0a第一种方法是一次性读入文件(或文件的前多少个连续字节)到一个数组中,因此,灵活性差。\x0d\x0a第二种方法灵活性很高,可以读取任意位置(使用文件的seek()方法跳跃位置)的二进制数据,再使用struct.unpack()方法来进行各种二进制解析。\x0d\x0a\x0d\x0a提示:二进制文件是不保留存储方式的数据格式,因此,读二进制文件时应该知道二进制文件的存储格式。
Python—Numpy库的用法
NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。
NumPy 支持比 Python 更多种类的数值类型。 下表显示了 NumPy 中定义的不同标量数据类型。
[('age', 'i1')]
[10 20 30]
[('abc', 21, 50.0), ('xyz', 18, 75.0)]
每个内建类型都有一个唯一定义它的字符代码:
[[1, 2] [3, 4] [5, 6]]
[[[ 0, 1, 2] [ 3, 4, 5] [ 6, 7, 8] [ 9, 10, 11]] [[12, 13, 14] [15, 16, 17] [18, 19, 20] [21, 22, 23]]]
[1 2 3]
[1 2 3]
[(1, 2, 3) (4, 5)]
原始数组是: [[ 0 5 10 15] [20 25 30 35] [40 45 50 55]]
修改后的数组是: 0 5 10 15 20 25 30 35 40 45 50 55
原始数组是: [[ 0 5 10 15] [20 25 30 35] [40 45 50 55]]
原始数组的转置是: [[ 0 20 40] [ 5 25 45] [10 30 50] [15 35 55]]
修改后的数组是: 0 5 10 15 20 25 30 35 40 45 50 55
C风格是横着顺序
F风格是竖着的顺序
原始数组是: [[ 0 5 10 15] [20 25 30 35] [40 45 50 55]]
修改后的数组是: [[ 0 10 20 30] [ 40 50 60 70] [ 80 90 100 110]]
第一个数组: [[ 0 5 10 15] [20 25 30 35] [40 45 50 55]]
第二个数组: [1 2 3 4]
修改后的数组是: 0:1 5:2 10:3 15:4 20:1 25:2 30:3 35:4 40:1 45:2 50:3 55:4
原始数组: [[0 1 2 3] [4 5 6 7]]
调用 flat 函数之后: 5
原数组: [[0 1 2 3] [4 5 6 7]]
展开的数组:默认是A [0 1 2 3 4 5 6 7]
以 F 风格顺序展开的数组: [0 4 1 5 2 6 3 7]
原数组: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]
转置数组: [[ 0 4 8] [ 1 5 9] [ 2 6 10] [ 3 7 11]]
图解Python中数据分析工具包:Numpy
numpy是我学习python遇到的第一个第三方工具包,它可以让我们快速上手数据分析。numpy提供了向量和矩阵计算和处理的大部分接口。目前很多python的基础工具包都是基于numpy开发而来,比如 scikit-learn, SciPy, pandas, 还有 tensorflow。 numpy可以处理表格、图像、文本等数据,极大地方便我们处理和分析数据。本文主要内容来自于Jay Alammar的一篇文章以及自己学习记录。
原文地址:
使用过程中,如果希望 Numpy 能创建并初始化数组的值, Numpy 提供了 ones()、zeros() 和 random.random() 等方法。只需传递希望生成的元素数量(大小)即可:
还可以进行如下操作:
一般,需要数组和单个数字之间也可以进行运算操作(即向量和标量之间的运算)。比如说 data * 1.6 ,numpy利用一个叫做广播机制(broadcasting)的概念实现了这一运算。:
我们可以通过索引对numpy数据获取任意位置数据或者对数据切片
我们可以通过numpy自带的函数对数据进行一些想要的聚合计算,比如min、max 和 sum ,还可以使用 mean 得到平均值,使用 prod 得到所有元素的乘积,使用 std 得到标准差等等。
上述操作不仅可以应用于单维度数据,还可以用于多维度数据{(矩阵)。
同样可以使用ones()、zeros() 和 random.random()创建矩阵,只要写入一个描述矩阵维数的元组即可:
numpy还可以处理更高维度的数据:
创建更高维度数据只需要在创建时,在参数中增加一个维度值即可:
根据数组中数值是否满足条件,输出为True或False.
希望得到满足条件的索引,用np.where函数实现.
根据索引得到对应位置的值.
np.where也可以接受另两个可选择的参数a和b。当条件满足时,输出a,反之输出b.
获取数组最大值和最小值的索引可以使用np.argmax和np.argmin.
1、numpy.tofile()和numpy.fromfile()
保存为二进制格式,但是不保存数组形状和数据类型, 即都压缩为一维的数组,需要自己记录数据的形状,读取的时候再reshape.
2、numpy.save() 和 numpy.load()
保存为二进制格式,保存数组形状和数据类型, 不需要进行reshape
实例:
3、numpy.savetxt()和numpy.loadtxt()
np.savetxt(fname,array,fmt=’%.18e’,delimiter=None)
Parameter解释:
array:待存入文件的数组。
fmt:写入文件的格式
实例:
python写入和读取h5、pkl、mat 文件
python中使用h5py对HDF5文件进行操作。
1、创建文件和数据集
import h5py
import numpy as np
imgData = np.zeros((2,4))
f = h5py.File('HDF5_FILE.h5','w') #创建一个h5文件,文件指针是f
f['data'] = imgData #将数据写入文件的主键data下面
f['labels'] = np.array([1,2,3,4,5]) #将数据写入文件的主键labels下面
f.close() #关闭文件
f = h5py.File('HDF5_FILE.h5','r') #打开h5文件
for key in f.keys():
print(f[key].name)
print(f[key].shape)
print(f[key].value)
输出结果:
/data
(2, 4)
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
/labels
(5,)
[1 2 3 4 5]
Process finished with exit code 0
写入读取pkl文件
1)字典类型:
import pickle
dict_data={'name':["张三","李四"]}
with open("dict_data.pkl","wb") as fo:
pickle.dump(dict_data,fo)
with open("dict_data","rb") as fo:
dict_data=pickle.load(fo,encoding='bytes')
print(dict_data.keys())
print(dict_data)
print(dict_data["name"])
结果如下:
dict_keys(['name'])
{'name': ['张三', '李四']}
['张三', '李四']
2)列表类型
import pickle
list_data=["张三","李四"]
with open ("list_data","wb") as fo:
pickle.dump(list_data,fo)
with open("list_data","rb") as fo:
pickle.load(fo,encoding='bytes')
print(list_data)
print(list_data.keys())
pirnt(list_data["name"])
mat文件
mat数据格式是Matlab的数据存储的标准格式。在Matlab中主要使用load()函数导入一个mat文件,使用save()函数保存一个mat文件。对于文件data.mat:
load(‘data.mat')
save('data_1.mat','A')
其中'A’表示要保存的内容。
在python读取mat文件:
1、读取文件:
import scipy.io as scio
file1='E://data.mat'
data=scio.loadmat(file1)
注意,读取出来的data是字典格式,可以通过函数type(data)查看。
print type(data)
结果显示
type 'dict'
找到mat文件中的矩阵:
print data['A']
结果显示