Numpy数据存取与函数

CSV文件:

        CSV (Comma‐Separated Value, 逗号分隔值),CSV是一种常见的文件格式,用来存储批量数据。

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

        参数说明:frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件;array : 存入文件的数组;fmt : 写入文件的格式,例如:%d %.2f %.18e;delimiter : 分割字符串,默认是任何空格。

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

        参数说明:frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件;dtype : 数据类型,可选;delimiter : 分割字符串,默认是任何空格;unpack  : 如果True,读入属性将分别写入不同变量。

        CSV文件的局限性:CSV只能有效存储一维和二维数组,np.savetxt() np.loadtxt()只能有效存取一维和二维数组。

 

多维数据的存取:

        a.tofile(frame, sep='', format='%s')

        参数说明:frame : 文件、字符串;sep : 数据分割字符串,如果是空串,写入文件为二进制;format : 写入数据的格式。

        np.fromfile(frame, dtype=float, count=‐1, sep='')

        参数说明:frame : 文件、字符串;dtype : 读取的数据类型;count  : 读入元素个数,‐1表示读入整个文件;sep : 数据分割字符串,如果是空串,读入的文件为二进制。

        需要注意:该方法需要读取时知道存入文件时数组的维度和元素类型,a.tofile()和np.fromfile()需要配合使用,可以通过元数据文件来存储额外信息。

 

Numpy的便捷文件存取:

        np.save(fname, array) 或np.savez(fname, array)

        参数说明:fname: 文件名,以.npy为扩展名,压缩扩展名为.npz;array  : 数组变量。

        np.load(fname)

        参数说明:fname: 文件名,以.npy为扩展名,压缩扩展名为.npz。

 

程序实例:

# -*- coding: utf-8 -*-

import numpy as np
import os

# 设置路径为当前路径
path = os.path.dirname(__file__);
os.chdir(path);



data = np.arange(100).reshape(10, 10);

# 保存csv文件
np.savetxt('a.csv', data, fmt='%d', delimiter=',');

# 读取csv文件,不指定数据类型(默认为float)
a = np.loadtxt('a.csv', delimiter=',');
# 读取csv文件,指定数据类型
b = np.loadtxt('a.csv', dtype=np.int, delimiter=',');



# csv只能保持二维数组,任意维度数据的存取使用tofile和fromfile
# sep指定分隔符,若不指定,则文件为二进制文件
data1 = np.arange(100).reshape(5, 10, 2);
data1.tofile("b.dat", sep=",", format="%d");

# fromfile方法读取文件,需要读取时知道存入文件时数组的维度和元素类型
# a.tofile()和np.fromfile()需要配合使用可以通过元数据文件来存储额外信息
c = np.fromfile("b.dat", sep=",", dtype=np.int).reshape(5,10,2);



# 以numpy的文件类型来存取数据,文件扩展名为.npy,压缩文件为.npz
np.save("c.npy", data);
d = np.load("c.npy");

Numpy的随机数函数:

        numpy库中有一个random子库为数组类型提供随机数

random子库的函数

函数

功能

rand(d0,d1,..,dn)

根据d0‐dn创建随机数数组,浮点数,[0,1),均匀分布

randn(d0,d1,..,dn)

根据d0‐dn创建随机数数组,标准正态分布

randint(low[,high,shape])

根据shape创建随机整数或整数数组,范围是[low, high)

seed(s)

随机数种子,s是给定的种子值

shuffle(a)

根据数组a的第1轴进行随排列,改变数组x

permutation(a)

根据数组a的第1轴产生一个新的乱序数组,不改变数组x

choice(a[,size,replace,p])

从一维数组a中以概率p抽取元素,形成size形状新数组

replace表示是否可以重用元素,默认为True

uniform(low,high,size)

产生具有均匀分布的数组,low起始值,high结束值,size形状

normal(loc,scale,size)

产生具有正态分布的数组,loc均值,scale标准差,size形状

poisson(lam,size)

产生具有泊松分布的数组,lam随机事件发生率,size形状

程序实例:

# -*- coding: utf-8 -*-

import numpy as np

# numpy库中有一个random子库为数组类型提供随机数

# rand() 生成给定数组大小的随机数组, 浮点数,[0,1),均匀分布
a = np.random.rand(3, 4, 5);

# randn() 标准正态分布
b = np.random.randn(3, 4, 5);

# randint(low[,high,shape])  根据shape创建随机整数或整数数组,范围是[low, high)
c = np.random.randint(100, 200, (3, 4));
print(c);

# seed(s)  随机数种子,s是给定的种子值
# 两次设置相同的随机数种子  生成的随机数一样
np.random.seed(10);
test1 = np.random.randint(10, 20, (3,4));
np.random.seed(10);
test2 = np.random.randint(10, 20, (3,4));

# shuffle(a) 根据数组a的第1轴进行随排列,改变数组x
np.random.shuffle(c);
print(c);
# permutation(a) 根据数组a的第1轴产生一个新的乱序数组,不改变数组x
d = np.random.randint(100, 200, (3, 4));
print(d);
np.random.permutation(d);
print(d);
# 从一维数组a中以概率p抽取元素,形成size形状新数组replace表示是否可以重用元素,默认为True
e = np.random.randint(100, 200, (8,));
print(e);
f = np.random.choice(e, (3, 2));

Numpy的统计函数:

        NumPy直接提供的统计类函数

NumPy的统计函数

函数

功能

sum(a, axis=None)

根据给定轴axis计算数组a相关元素之和,axis整数或元组

mean(a, axis=None)

根据给定轴axis计算数组a相关元素的期望,axis整数或元组

average(a,axis=None,weights=None)

根据给定轴axis计算数组a相关元素的加权平均值

std(a, axis=None)

根据给定轴axis计算数组a相关元素的标准差

var(a, axis=None)

根据给定轴axis计算数组a相关元素的方差

min(a)  max(a)

计算数组a中元素的最小值、最大值

argmin(a)   argmax(a)

计算数组a中元素最小值、最大值的降一维后下标

unravel_index(index, shape)

根据shape将一维下标index转换成多维下标

ptp(a)

计算数组a中元素最大值与最小值的差

median(a)

计算数组a中元素的中位数(中值)

                          axis = None 是统计函数的标配参数

 

程序实例:

# -*- coding: utf-8 -*-

import numpy as np

a = np.arange(15).reshape(3, 5);

# 默认情况下axis = none,求的是所有值的总和
total = np.sum(a);
# axis = 0 每列求总和
total1 = np.sum(a, axis = 0);
# axis = 1 每行求总和
total2 = np.sum(a, axis = 1);


# 其他有axis选项的函数类似


mean = np.mean(a);
mean1 = np.mean(a, axis = 0);

# 根据给定轴axis计算数组a相关元素的加权平均值
# 求每列的加权平均,例如第三列:2*10+7*5+1*12/(10+5+1)=4.1875
avg = np.average(a, axis = 0, weights=[10, 5, 1]);


# 标准差 std
std = np.std(a);
# 方差 yar
var = np.var(a);


b = np.arange(15, 0, -1).reshape(3, 5);

maxb = np.max(b);
# 扁平化后的下标
min_index = np.argmin(b);
# 重塑成多维下标
remin_index = np.unravel_index(np.argmin(b), b.shape);

# 最大值与最小值差
cha = np.ptp(b);
# 中值
media = np.median(b);

Numpy的梯度函数:

函数

功能

np.gradient(f)

计算数组f中元素的梯度,当f为多维时,返回每个维度梯度

        梯度:连续值之间的变化率,即斜率;

        XY坐标轴连续三个X坐标对应的Y轴值:a, b, c,其中,b的梯度是: (c‐a)/2。

Numpy数据存取与函数_第1张图片Numpy数据存取与函数_第2张图片

你可能感兴趣的:(Python,Python数据分析)