numpy学习

前言

NUMPY(以下简称NP)是Python数据分析必不可少的第三方库,np的出现一定程度上解决了Python运算性能不佳的问题,同时提供了更加精确的数据类型。如今,np已成为Python 数据分析的基础,可以说,NP是SciPy、Pandas等数据处理或科学计算库最基本的函数功能库。因此,理解np的数据类型对python数据分析十分有帮助。

NP提供了以下重点功能。

  1. 一个强大的N维数组对象ndarray
  2. 广功能函数
  3. 整合C/C++/Fortran代码的工具
  4. 提供了线性代数 傅里叶变换 随机数生成的相关功能

使用NUMPY操作数据集

了解什么是维度

官方概念 维度是一组数据的组织形式,不同数据维度可能表示不同的含义。
一维数据由对等关系的有序或无序数据构成,采用线性方式组织,可以用数组表示。如下所示

1,2,3,4

这么一行数据就可以称之为一维数据,但如果我们再对其折叠:

1,2
3,4

那么他就成为了二维数据,又可以称之为矩阵。

数据集
字面上理解就是一堆数据的集合喽
一般是二维或者多维数表。
手工建一个数据集,可以直接新建一个文本文件,只要有恰当的数据,都可以称之为数据集:

A,B,C,D
1,2,3,4
一,二,三,四

这样,我们就可以称上面的文件称之为数据集。我们还注意到,上面数据是使用逗号作为分隔符分隔数据的,它简单描述了数据的内容和含义,并使用半角逗号作为分隔符。像这样,用逗号分隔的数据集就称之为CSV(Comma-Separated Value,逗号分隔值)数据集,它是一种常见的文件格式,用来存储批量的数据。它就像一张excel表,用来存储简单结构的数据。
你可以把excel导出为CSV格式,用记事本打开
这里写图片描述

生成数据集
数据集是一个简单的概念,但每次使用手工的方式去写毕竟不方便,所以,我们可以使用np的内置函数来生成数据集

np.savetxt(frame,array,fmt='%.18e",delimiter=None)
//eg:
a= np.arange(20).reshape(4,5)
np.savetxt('demo.csv',a,fmt='%d',delimiter=',')

frame:文件、字符串、或产生器的名字,可以是.gz,.bz2的压缩文件
arrray:存入文件的NP的数组
fmt(format):写入文件的格式,如%d,%.2f,%.18e(默认,科学计数法保留18位)
delemiter:我们就会在当前的工作目录下发现一个新的demo.csv,用记事本打开,里面是一个4 * 5的矩阵,元素0~19。

面对二维以上的,csv就无能为力了
本文不在过多介绍文件存取数据集,后面的才是我的重点
链接
重点介绍以下内容

np数组

lst = [[1,3,5],[2,4,6]]
np_lst = np.array(lst,dtype=np.float)
print(np_lst.shape)#返回数组的行列
print(np_lst.ndim)#返回数组的维数
print(np_lst.dtype)#返回数据类型,float默认为64
print(np_lst.itemsize)#np.array每个元素的大小,float64占8个字节
print(np_lst.size)#大小,6个元素
(2, 3)
2
float64
8
6

初始化数组

print(np.zeros([2,4])#初始化一个24列的数组
print(np.ones([2,4])
[[ 0.  0.  0.  0.]
[ 0.  0.  0.  0.]]
[[ 1.  1.  1.  1.]
[ 1.  1.  1.  1.]]

随机数

print(np.random.rand(2,4))#将生成一个处于0~1之间24列的随机数序列(不加参数将只返回一个)
[[ 0.39531286  0.4845      0.1463168   0.82327991]
[ 0.89042255  0.65049931  0.43890163  0.89577744]]

print np.random.rand(5)#生成一个形状为5的一维数组
[ 0.9271712   0.18488478  0.02823013  0.74086267  0.22835426]

print np.random.rand(2,3) #生成2x3的二维数组
[[ 0.46315482  0.14754522  0.96079752]
 [ 0.96255803  0.05377994  0.32438745]]

numpy.random.randint(low, high=None, size=None, dtype=’l’):
生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。

np.random.randint(2,size=5) #array([0, 1, 1, 0, 1])
np.random.randint(2,6,size=5) #生成个数为5的一维整数数组  
np.random.randint(2,size=(2,3))#生成一个2x3整数数组,取数范围:[0,2)随机整数  
np.random.randint(2,6,(2,3))#生成一个2x3整数数组,取值范围:[2,6)随机整数 

其他不太常用的

print(np.random.randn(24))#生成标准正态随机数
[[-1.15561548  0.3689953   0.38253231 -1.16346441]
[-1.32625322 -0.41707673 -0.11822205 -0.95807535]]
print(np.random.choice([10,20,40,33]))#从指定可迭代的数组中生成随机数
20
print(np.random.beta(1,10,4))#生成4个beta分布
[ 0.02258548  0.25848896  0.00696899  0.0609543 ]
print(np.arange(1,11,2))#得到step为2的range序列
[1 3 5 7 9]
print(np.arange(1,11).reshape(2,5))#(5可以缺省为-1[[ 1  2  3  4  5]
[ 6  7  8  9 10]]

提问:trainData = np.random.randint(0, 100, (25, 2)) 得到的是什么呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值