Numpy-创建数据
2019-02-13 本文已影响0人
davidic
创建数据
创建ndarray
NumPy的数组类被称作ndarray。通常被称作数组。
Numpy库中的矩阵模块为ndarray对象,有很多属性:T,data, dtype,flags,flat,imag,real,size,
itemsize,nbytes,ndim,shape,strides,ctypes,base等等。
import numpy as np
vector = np.array([10,20,30])
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])
# 创建10个float32的一维数组
np.random.rand(10).astype(np.float32)
# 这样就是10*2的二维数组
np.random.rand(10,2).astype(np.float32)
随机array
np.random.randn
可以返回一个随机数组
np.random.randn(1,2)
Out[11]: array([[-2.67809797, 1.49728361]])
# 在0-5之间生成随机数
np.random.rand(2,3)*5
# 或者
np.dot(5,np.random.rand(2,3))
# 指定生成随机数的范围
np.random.randint(0, 20, size=[2,3])
- np.random.rand 随机样本位于[0,1)中
- np.random.randn 从标准正态分布中返回样本,默认的范围是,等价于np.random.standard_normal
如果要返回2*4的的随机分布,可知均值是3,标准差是2.5,则
3+2.5*np.random.randn(2,4)
创建空的array
np.zeros((5,1))
注意有两层括号,因为参数是一个shape
随机数的seed
numpy.random.seed()
seed( ) 用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed( )值,则每次生成的随即数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。
from numpy import *
num=0
while(num<5):
random.seed(5)
print(random.random())
num+=1
每次都一样
from numpy import *
num=0
random.seed(5)
while(num<5):
print(random.random())
num+=1
每次不一样
也就是一次有效。
创建等差数列
创建等差数列,默认是创建50个,一般写成
x2 = np.linspace(1,10,10)
由函数创建
>>> def func (i):
... return i%4+1
>>> np. fromfunction(func, (10 ,))
array([ 1., 2., 3., 4., 1., 2., 3., 4., 1., 2.])
首先,定义一个func函数,模4加1。
然后,调用np对象的fromfunction内建函数,第一个参数是我们自定义的func,第二个参数(m,n),他处理的逻辑是这个样的:第一行第一列取(0,0)带入func函数,第一行第二列取(0,1)带入func函数,第一行第三列取(0,2)带入func函数……循环往复,直到取到值(0,n-1)带入函数以后,开始取第二行。。因为我们定义的函数只有一个参数,所以m从0取到9即可。最后返回数列:array([ 1., 2., 3., 4., 1., 2., 3., 4., 1., 2.]) 。
读取csv转为numpy
假设第一行是描述,第二行起是数据;第一列是标签,后面是特征项
import numpy as np
data = np.loadtxt(open('sample.csv','rb'), delimiter=',', skiprows=1)
y_train = data[:,0]
x_train = data[:,1:-1]
np.random.randn
可以返回一个随机数组
np.random.randn(1,2)
Out[11]: array([[-2.67809797, 1.49728361]])
- np.random.rand 随机样本位于[0,1)中
- np.random.randn 从标准正态分布中返回样本,默认的范围是,等价于np.random.standard_normal
如果要返回2*4的的随机分布,可知均值是3,标准差是2.5,则
3+2.5*np.random.randn(2,4)
如果在matlib模块中使用,则返回的是matrix而不是array
import numpy.matlib
np.matlib.randn(1,2)
Out[13]: matrix([[ 0.13107513, -0.87977247]])