栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Numpy学习笔记2】数据读取、标准数据创建、随机数产生、速度提高

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Numpy学习笔记2】数据读取、标准数据创建、随机数产生、速度提高

读取数据

主要内容:

    加载常用数据格式,
    np.loadtxt(), np.fromstring()保存数据
    np.savetxt()
    np.save(), np.savez(), np.savez_compressed()

numpy不能读取excel文件,追求存储速度用二进制文件方式,要能够查看,储存为txt或csv格式

import numpy as np

#读入.csv文件
data  = np.loadtxt("data.csv", delimiter=",",skiprows = 1,dtype =np.int16)#csv格式的文件分隔符都是逗号,跳过第一行文字描述
print(data)

#读入字符串数据
row_string = "20131, 10, 67, 20132, 11, 88, 20133, 12, 98, 20134, 8, 100, 20135, 9, 75, 20136, 12, 78"
data = np.fromstring(row_string, dtype=np.int16, sep=",")
data = data.reshape(6, 3)  #读入数据后,用reshape可以重新组织数据的格式
print(data)

#保存数据为.csv文件
np.savetxt("saved_data.csv", data, delimiter=",", fmt='%.4f') 

#保存为二进制文件,文件结尾为.npy
np.save("save_data.npy", data)
np.savez("save_data.npz",train=data , test=data ) #用train和test来作为索引标签,在一个文件下存储两个array

#np.savez_compressed("data/save_data_compressed.npz", train=train_data, test=test_data)  
#用上面的函数进行压缩,减少空间

#加载
npz_data = np.load("save_data.npz")
print("train = ", npz_data["train"])
标准数据创建

主要内容:

    创建统一数据
    np.zeros(), np.ones(), np.full()
    np.zeros_like(), np.ones_like(), np.full_like()创建规则数据
    np.arange(), np.linspace()快速创建再添加值
    np.empty(), np.empty_like()
import numpy as np

b = np.array([[0,1,2,3],[4,5,6,7]])
a = b.reshape((4,2))  #也可以写成shape((4,-1)),-1表示自动计算,也可以写成reshape(4,2)
b[1][0] = 8877  # reshape是共享内存的,a也被修改

#快速生成数列,np.arange(起,终,间隔)
print("np.arange(0,1,0.2)= ",np.arange(0,1,0.2))
#linspace 等差数列
print("np.linspace(0,1,10)= ",np.linspace(0,1,10)) #(0,1)之间内插10个值,等差,endpoint设定是否包含结尾值
#等比数列
print("np.logspace(0,2,10)= ",np.logspace(0,2,10)) #10^0-10^2内生成等比数列,base设定基底,默认是10
#全0数组
print(np.zeros((3,3), np.int0))
#全1数组
print(np.ones((3,3), np.int0))
#元素全等
print(np.full((3,3), 5))

#先生成内存,担不存储数据,后面再将数据进行替换,速度快
print(np.empty((3,4),dtype= np.int16))
随机数的产生
import numpy as np

#np.random.rand() 是一种最方便去生成带 shape 的 [0, 1) 之间取值的 Array
print(np.random.rand(2,3))

#标准正态
print(np.random.randn(2,3))

#随机整数
print(np.random.randint(low = -1, high = 20, size = 10,dtype = np.int16))

#从给定的array里面生成
data = np.array([2,1,3,4,6])
print("选一个:", np.random.choice(data))
print("选多个:", np.random.choice(data, size=3))
print("不重复地选多个(不放回):", np.random.choice(data, size=3, replace=False))
print("带权重地选择:", np.random.choice(data, size=10, p=[0,0,0,0.2,0.8]))

#洗牌功能,先copy再洗牌
data_copy =np.copy(data)
np.random.shuffle(data)
print(data_copy,"n===============n",data)

#np.random.permutation() 产生随机数,但不影响原来的数据,且可以处理多维数据

# (均值,方差,size)
print("正态分布:", np.random.normal(1, 0.2, 10))

# (最低,最高,size)
print("均匀分布:", np.random.uniform(-1, 1, 10))

#当我们把种子固定的时候(用一个数字),同一个种子(数字)产生的随机序列就会一样。
np.random.seed(1)#表示1号序列
print(np.random.rand(2,3))  #随机数不会改变
print(np.random.randint(2,3))
速度提高

Numpy Array 和 Python List 内部结构差别

赋值的时候是名字绑定,相当于给数据开了另一个窗口,只有一份原始数据,尽量用切片去访问数据,相当于View,而避免使用copy,

import numpy as np

a = np.arange(1, 7).reshape((3,2))
a_view = a[:2]
a_copy = a[:2].copy()

a_copy[1,1] = 0
print("在 copy 上修改数据,不会影响源数据:n", a)

a_view[1,1] = 0
print("在 view 上修改数据,会影响'窗里'的源数据:n", a)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/744331.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号