numpy学习

知识点一、numpy中生成随机样本点的方法

(1)1、使用numpy.random.rand(d0, d1, ....dn):方法

    生成指定形状的数组,其元素值是在均匀分布[0, 1]之间随机生成,其中d0, ...dn表示的是数组的大小(也就是维数,只有一个数字时默认是一维的),如果不指定大小,默认返回一个随机数值。数组默认的返回类型是float.如果指定100,那么返回一个1*100的一维数组。

例如:

  1. w0 = np.random.rand()
  2. print w0,  "\n"
  3. w00 = np.random.rand( 23)
  4. print w00,  "\n"
  5. 输出:
  6. 0.528211605811 #0-1之间的随机值
  7. [[  0.89478507  0.81066081  0.04658165] #0-1之间的随机值
  8. 0.88438714  0.76890682  0.86752058]]

2、numpy.random.randn(d0, d1, ...dn):

  从标准正态分布中返回一个随机样本。

<1>、无参数

  1. w1 = np.random.randn()
  2. print w1,  "\n"
  3. 输出:
-0.755503212712 
<2>指定返回样本的大小
  1. w2 = np.random.randn(23)
  2. print w2,  "\n"
  3. 输出:
  4. [[ 0.34894362 -0.90593742 1.41079113]
  5. [ -0.67110078  -0.21309708  1.01333301]]
<3>从指定方差和均值的正态分布中随机生成一个样本:

  样式:  sigma * numpy.random.randn(d0, ...,dn) + mu

  1. 例如:
  2. sigma = 1.3
  3. w3 = sigma * np.random.randn( 23)
  4. print w3
  5. 输出:
  6. [[ 1.12659049 -2.13454097 -0.84336796]
  7. [ -0.00758082  -0.52353856  0.9649422 ]]
3、1)np.random.randint(0,10,size=3) 

       #等价于np.random.randint(0,10,3)     

       #生成0-10的3个随机整数,只有一个数字3表示是生成一个1*3的一维矩阵

       输出: array([6, 7, 7])                               #为1*3的矩阵

     2) np.random.randint(0,10,size=(3,3))

       输出:
              Out[351]:                                         
              array([[5, 1, 4],

                         [2, 8, 4],                                       #为3*3的矩阵                              

                         [4, 2, 3]])

4、numpy.random.shuffle()


例如:

          x=['Python','data','random','Mining','good']
           random.shuffle(x)      # 用于将一个列表中的元素打乱,
            print (x)
                                                                    
                                                                            
['Mining', 'Python', 'random', 'data', 'good']

5、numpy.random.sample()

例如:

lists=[1,2,3,4,5,6,7,8,10]                                  #从指定序列中随机获取指定长度的片断

a=random.sample(lists,3)
print (a)
输出:[8, 6, 10]


6、numpy.random.normal(loc=0.0, scale=1.0, size=None)


先看伟大的高斯分布(Gaussian Distribution)的概率密度函数(probability density function):

f(x)=12πσexp((xμ)22σ2)f(x)=12πσexp⁡(−(x−μ)22σ2)

对应于numpy中:

numpy.random.normal(loc=0.0, scale=1.0, size=None)
  • 1

参数的意义为:

loc:float
    此概率分布的均值(对应着整个分布的中心centre)
scalefloat
    此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
sizeint or tuple of ints
    输出的shape,默认为None,只输出一个值
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

我们更经常会用到的np.random.randn(size)所谓标准正态分布(μ=0,σ=1μ=0,σ=1),对应于np.random.normal(loc=0, scale=1, size)

(2)使用numpy.linspace()方法

官方文档https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html

numpy.linspace(startstopnum=50endpoint=Trueretstep=Falsedtype=None)Parameters(参数): 
start : 序列的起始点.
stop : 序列的结束点
num : 生成的样本数,默认是50。必须是非负。
endpoint : 如果True'stop'是最后一个样本。否则,它不包括在内。默认为True。
retstep :  如果True,返回 (`samples`, `step`)
dtype : 

第1个例子endpoint的使用:

import numpy as np
print(np.linspace(2.0, 3.0, num=5))
print(np.linspace(2.0, 3.0, num=5, endpoint=True))
print(np.linspace(2.0, 3.0, num=5, endpoint=False))

输出:

[ 2.    2.25  2.5   2.75  3.  ]
[ 2.    2.25  2.5   2.75  3.  ]
[ 2.   2.2  2.4  2.6  2.8]

从上面输出可以看出endpoint=True时,输出包含了“stop”这个样本点;endpoint=False时,输出不包括“stop”这个样本点;默认情况endpoint=True。


第2个例子retstep的使用:

import numpy as np

print(np.linspace(2.0, 3.0, num=5))
a = np.linspace(2.0, 3.0, num=5, retstep=True)
print(a)
print(a[0])
print(a[1])

输出:

[ 2.    2.25  2.5   2.75  3.  ]
(array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25)
[ 2.    2.25  2.5   2.75  3.  ]
0.25

retstep=True时输出了步长(step),此时步长为0.25


第3个例子:

import numpy as np

import matplotlib.pyplot as plt
N = 8
y = np.zeros(N)
x1 = np.linspace(0, 10, N, endpoint=True)
x2 = np.linspace(0, 10, N, endpoint=False)
plt.plot(x1, y, 'o')
plt.plot(x2, y + 0.5, 'o')
plt.ylim([-0.5, 1])
plt.show()

输出:

这里写图片描述


知识点二、numpy添加新的维度:newaxis

numpy中包含的newaxis可以给原数组增加一个维度

np.newaxis放的位置不同,产生的新数组也不同

一维数组

x = np.random.randint(1, 8, size=5)

x
Out[48]: array([4, 6, 6, 6, 5])

x1 = x[np.newaxis, :]

x1
Out[50]: array([[4, 6, 6, 6, 5]])

x2 = x[:, np.newaxis]

x2
Out[52]: 
array([[4],
       [6],
       [6],
       [6],
       [5]])
由上图可知,把newaxis放在列的位置,就是增加一个列向量,放到行的位置就是增加一行。可以把1行5列的数组变成一个5行1列的数组。

高维数组


由上图可知,把newaxis放在第几个位置,就在该位置上增加一个维度。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值