大发国际网_大发国际网※【信誉保证→大额无忧】 当前位置:首页>大发国际网_大发国际网※【信誉保证→大额无忧】>正文

大发国际网_大发国际网※【信誉保证→大额无忧】

发布时间:2019-03-21

原标题:掌握numpy(一)

如遇【线上娱乐站】不能自动打开,请复制 http://da8.us 到浏览器,注册自动送8-88试 ̶̶̶̶̶̶̶̶̶̶玩 ̷̷̷̷̷̷̷̷̷̷金。体验各种类的线上PT/DT/MG/PNG ̶̶̶̶̶̶̶̶̶̶老 ̷̷̷̷̷̷̷̷̷̷虎 ̷̷̷̷̷̷̷̷̷̷机、 ̷̷̷̷̷̷̷̷̷̷真* ̷̷̷̷̷̷̷̷̷̷人* ̶̶̶̶̶̶̶̶̶̶百* ̶̶̶̶̶̶̶̶̶̶家 ̷̷̷̷̷̷̷̷̷̷*乐*游戏等免费试玩、优惠活动,7*24小时专业服务

“赤犬,卡普你们回来了,这么说刘皓的事情都已经……怎么会!”听到开门声,那熟悉的脚步声和气息战国立刻判断出是谁了,于是习惯性的头也没抬的说道,只是话说到一般很快察觉到有点异常,抬头一看顿时眼瞳收缩到极限,死死地盯着赤犬断臂的地方声音徒然提高了八度不止。

宝盈娱乐欢迎您

听唐三说肯先支付一百个金魂币。铁心已经有些相信眼前这个少年了,不过他开这铁匠铺也有不少年头。而唐三制作的这些东西又是他不认识的,因此。出于稳妥起见,他当然希望能够先摸清一些唐三的底细。只要唐三的魂师身份没问题,这笔大生意他就敢接下。
李易傲然挺身,他再抽一支箭,一箭又射断了李庆安的帅旗,黑色大旗被风卷入空中,霎时间不见了踪影。

出了史莱克学院,唐三一直向天斗城城南走去。他也不怕自己被认出来,毕竟,就算是武魂殿,见过自己新形象的也只有那少数几人而已。哪怕是画影图形也没那么快传到这天斗城。

NumPy是一款用于科学计算的python包,强大之处在于矩阵的运算以及包含丰富的线性代数运算的支持。本文将对numpy一些常用的用法进行讲解,一来是对自己的知识进行梳理,二来作为一份备忘录供以后查阅。

创建数组

首先我们要先引入numpy,常用的引入方法为

import numpy as np

np.zeros

该方法能够创建一个全为0的数组

>>np.zeros(5)
array([ 0.,  0.,  0.,  0.,  0.])

上面是创建一个1维的数组,创建一个多维的数组也很简单,eg下面是创建一个二维的数组

>>a = np.zeros((3,4))
>>a
array([[ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])

在上面的例子里面,每一个维度被成为轴(axis)
当定义了一个array的时候,我们可以查看其形状

>>a.shape
(3L, 4L)

还有查看该数组种元素的个数

>>a.size
12

在numpy种,数组类型有着其封装好的数据类型ndarray:

>>type(a)
numpy.ndarray

N维度数组

当然,我们还可以定义更高维度的数组,eg:下面我们定义一个3D 数组

>>np.zeros((2,3,4))
array([[[ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.]],
       [[ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.]]])

np.ones

与前面讲的zeros类似,这是创建一个全为1的数组

>>np.ones((3,4))
array([[ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.]])

np.full

创建一个数组,并由给定的数值进行初始化

>>np.full((3,4),np.pi)
array([[ 3.14159265,  3.14159265,  3.14159265,  3.14159265],
       [ 3.14159265,  3.14159265,  3.14159265,  3.14159265],
       [ 3.14159265,  3.14159265,  3.14159265,  3.14159265]])

np.empty

这个又是什么意思呢?创建一个未初始化的数组,里面的值全部随机

>>np.empty((2,2))
array([[  2.96206109e-316,   2.42711804e-316],
       [  1.85335328e-316,   1.85335328e-316]])

np.array

如何将python原生的list对象转化为numpy的array呢

>>np.array([1,2,3,4])
array([1, 2, 3, 4])

np.arange

numpy还提供了类似python的range方法

>>np.arange(1,5)
array([1, 2, 3, 4])

当然我们还可以设置迭代的步长

>>np.arange(1,5,0.5)
array([ 1. ,  1.5,  2. ,  2.5,  3. ,  3.5,  4. ,  4.5])

np.linspace

该方法的作用是将一组值,以相同的间隔,迭代给定的次数

>>np.linspace(1,10,4)
array([  1.,   4.,   7.,  10.])

np.rand 和np.randn

numpy提供了一系列的随机方法来随机初始化数组,下面是使用uniform distribution来随机初始化数组(取值范围[0,1])

>>np.random.rand(3,4)
array([[ 0.1017882 ,  0.96519783,  0.899528  ,  0.62844884],
       [ 0.63758273,  0.71036901,  0.76895382,  0.41230372],
       [ 0.31258595,  0.90595397,  0.44213312,  0.33604536]])

还可以使用normal distribution方法来初始化数组,均值为0、方差为1

>>np.random.randn(3,4)
array([[ 0.05971094,  1.57336808, -0.56372917,  1.58623654],
       [-0.82797012,  0.19435163,  1.64495295,  0.07486049],
       [-0.97815692,  1.4891987 ,  0.65185811, -0.53984805]])

为了更加直观的表示上面的函数,将使用matplotlib将其绘制出来

import matplotlib.pyplot as plt
plt.hist(np.random.rand(100000), normed=True, bins=100, histtype="step", color="blue", label="rand")
plt.hist(np.random.randn(100000), normed=True, bins=100, histtype="step", color="red", label="randn")
plt.axis([-2.5, 2.5, 0, 1.1])
plt.legend(loc = "upper left")
plt.title("Random distributions")
plt.xlabel("Value")
plt.ylabel("Density")
plt.show()

np.fromfunction

有些时候,单一的数组初始化方式不能满足我们的业务需求,这个时候我们就需要定制初始化规则,强大的numpy当然也会考虑到这一问题

def my_function(x,y,z):
    return x * y + z
a = np.fromfunction(my_function, (2,3,4))
>>a
array([[[ 0.,  1.,  2.,  3.],
        [ 0.,  1.,  2.,  3.],
        [ 0.,  1.,  2.,  3.]],

       [[ 0.,  1.,  2.,  3.],
        [ 1.,  2.,  3.,  4.],
        [ 2.,  3.,  4.,  5.]]])

上面得到的数组是怎么一个计算过程呢?首先numpy将数组种的坐标点带入自定义的函数种,例如右下角的5坐标点为(1,2,3)将其坐标代入自定义函数

数组中的数值

dtype

上一节将了使用numpy创建数组类型为ndarray,那么数组中的数据也有着自己的数据类型

>>c = np.arange(1, 5)
c.dtype #int32

data buffer

数组以一维度byte buffer存放在内存中,可以通过data属性来进行查看
先定义一个数组

>>f = np.array([[1,2],[1000, 2000]], dtype=np.int32)
f.data
<read-write buffer for 0x000000000BB03F30, size 16, offset 0 at 0x000000000C4DCEA0>

python2和3的查看方式不一样

if (hasattr(f.data, "tobytes")):
    data_bytes = f.data.tobytes() # python 3
else:
    data_bytes = memoryview(f.data).tobytes() # python 2
>>data_bytes
"x01x00x00x00x02x00x00x00xe8x03x00x00xd0x07x00x00"

编辑:秉密石

发布时间:2019-03-21 15:14:53

当前文章://cdyba.html

宝运莱|手机网址 宝运莱官网 - 点击进入!*>>> 北京赛车能赚钱吗 - PK彩票 必赢亚洲娱乐 - 官网直营! 

责任编辑:秉北扁纯

随机推荐