笔记关键词检索?

在所有笔记中搜索你感兴趣的关键词!

《Python科学计算基础教程》 ──   Masterning Python Scientific Computing

作者:[印] Hemant Kumar Mehta 著,陶俊杰,陈小莉 译


np.expand_dims()

np.expand_dims:用于扩展数组的形状
原始数组:

import numpy as np
In [12]:
a = np.array([[[1,2,3],[4,5,6]]])
a.shape
Out[12]:
(1, 2, 3)
np.expand_dims(a, axis=0)表示在0位置添加数据,转换结果如下:

In [13]:
b = np.expand_dims(a, axis=0)
b
Out[13]:
array([[[[1, 2, 3],
[4, 5, 6]]]])
In [14]:
b.shape
Out[14]:
(1, 1, 2, 3)
np.expand_dims(a, axis=1)表示在1位置添加数据,转换结果如下:

In [15]:
c = np.expand_dims(a, axis=1)
c
Out[15]:
array([[[[1, 2, 3],
[4, 5, 6]]]])
In [16]:
c.shape
Out[16]:
(1, 1, 2, 3)
np.expand_dims(a, axis=2)表示在2位置添加数据,转换结果如下:

In [17]:
d = np.expand_dims(a, axis=2)
d
Out[17]:
array([[[[1, 2, 3]],
[[4, 5, 6]]]])
In [18]:
d.shape
Out[18]:
(1, 2, 1, 3)
np.expand_dims(a, axis=3)表示在3位置添加数据,转换结果如下:

In [19]:
e = np.expand_dims(a, axis=3)
e
In [20]:
e.shape
Out[20]:
(1, 2, 3, 1)
能在(1,2,3)中插入的位置总共为4个,再添加就会出现以下的警告,要不然也会在后面某一处提示AxisError。

In [21]:
f = np.expand_dims(a, axis=4)
D:\ProgramData\Anaconda3\envs\dlnd\lib\site-packages\ipykernel_launcher.py:1: DeprecationWarning: Both axis > a.ndim and axis < -a.ndim - 1 are deprecated and will raise an AxisError in the future.
"""Entry point for launching an IPython kernel.
 

............

np.prod()

............

np.random.permutation()

............

Numpy中的三个常用正态分布函数randn,standard_normal, normal的区别

摘要:randn,standard_normal, normal这三个函数都可以返回随机正态分布的数组, 它们是从特殊到一般的形式。normal这个函数更加通用,且名字好记,建议平时使用这个函数生成正态分布。
 
这三个函数都可以返回随机正态分布(高斯Gaussian 分布)的数组,都可以从numpy.random中导出,先看三个函数的参数方式:
randn: randn(d0, d1, ..., dn),
返回shape为(d0, d1, ..., dn)的标准正态分布(均值为0,标准差为1)的数组
 
standard_normal: standard_normal(size=None),
跟randn一样,也是返回标准正态分布的数组,不同的是它的shape由size参数指定,对于多维数组,size必须是元组形式;
 
normal:  normal(loc=0.0, scale=1.0, size=None),
更一般的形式,返回均值为loc,标准差为scale的正态分布,shape由size参数决定。
 
可以看出randn,standard_normal, normal三个函数是从特殊到一般, randn是standard_normal的便捷写法,省去了需要将数组shape封装到size参数中,但这个函数的命名和参数方式是从MATLAB中引过来的,跟Numpy的其他函数如zeros,ones参数方式也不同统一,不建议使用。
 
randn和standard_normal都只能返回标准正态分布,对于更一般的正态分布Ν(μ, σ2), 需要使用 
σ * np.random.randn(...) + μ
 
normal函数可以直接给出均值和标准差(loc表示均值,scale表示标准差),normal函数默认情况下也是返回标准正态分布(loc=0.0, scale=1.0),
考虑到normal这个函数更加通用,且名字好记,建议平时使用这个函数生成正态分布。

............