7个罕见的Numpy函数!
本文介绍的是numpy中少见但是非常实用的7个函数。
In [1]:
代码语言:javascript复制import pandas as pd
import numpy as npnp.where()
功能和TensorFlow中的where函数相同,下面介绍用法
In [2]:
代码语言:javascript复制m = np.arange(0,15,2)
mOut[2]:
代码语言:javascript复制array([ 0, 2, 4, 6, 8, 10, 12, 14])In [3]:
代码语言:javascript复制# 情形1
np.where(m, 1, -1)Out[3]:
代码语言:javascript复制array([-1, 1, 1, 1, 1, 1, 1, 1])上面结果中如何m为真则输出1,否则输出-1。在m的取值中0代表的就是False,其他的为True。
In [4]:
代码语言:javascript复制# 情形2
np.where(m>=2,1,-1)Out[4]:
代码语言:javascript复制array([-1, 1, 1, 1, 1, 1, 1, 1])判断条件是m大于等于2,则输出1;否则输出-1
In [5]:
代码语言:javascript复制# 情形3
np.where(m>=2)Out[5]:
代码语言:javascript复制(array([1, 2, 3, 4, 5, 6, 7]),)当执行完条件后面没有规定输出的内容,直接输出满足要求数据的索引值
In [6]:
代码语言:javascript复制m[np.where(m>=2)]Out[6]:
代码语言:javascript复制array([ 2, 4, 6, 8, 10, 12, 14])np.random.RandomState.rand(维度)
返回[0,1)之间的随机数
In [7]:
代码语言:javascript复制rdm = np.random.RandomState(seed=1)In [8]:
代码语言:javascript复制rdm.rand() # 返回单个0-1之间的数值Out[8]:
代码语言:javascript复制0.417022004702574如果不指定维度,就是返回0到1之间的某个数值
In [9]:
代码语言:javascript复制rdm.rand(2,3) # 指定维度 3*2Out[9]:
代码语言:javascript复制array([[7.20324493e-01, 1.14374817e-04, 3.02332573e-01],
[1.46755891e-01, 9.23385948e-02, 1.86260211e-01]])In [10]:
代码语言:javascript复制rdm.rand(4,3) # 4*3Out[10]:
代码语言:javascript复制array([[0.34556073, 0.39676747, 0.53881673],
[0.41919451, 0.6852195 , 0.20445225],
[0.87811744, 0.02738759, 0.67046751],
[0.4173048 , 0.55868983, 0.14038694]])np.vstack()
将两个数值按垂直方向叠加
代码语言:javascript复制np.vstack(array1, array2)In [11]:
代码语言:javascript复制array1 = np.array([1,2,3])
array2 = np.array([2,3,4])In [12]:
代码语言:javascript复制np.vstack([array1,array2])Out[12]:
代码语言:javascript复制array([[1, 2, 3],
[2, 3, 4]])In [13]:
代码语言:javascript复制array3 = np.array([[1,2,3],
[4,5,6]
])
array4 = np.array([[5,6,7],
[8,9,10]
])In [14]:
代码语言:javascript复制np.vstack([array3,array4])Out[14]:
代码语言:javascript复制array([[ 1, 2, 3],
[ 4, 5, 6],
[ 5, 6, 7],
[ 8, 9, 10]])np.mgrid()
np.mgrid[起始值:结束值:步长, 起始值:结束值:步长]
In [15]:
代码语言:javascript复制import numpy as npIn [16]:
代码语言:javascript复制x,y = np.mgrid[1:4:1, 2:4:0.5]In [17]:
代码语言:javascript复制xOut[17]:
代码语言:javascript复制array([[1., 1., 1., 1.],
[2., 2., 2., 2.],
[3., 3., 3., 3.]])In [18]:
代码语言:javascript复制yOut[18]:
代码语言:javascript复制array([[2. , 2.5, 3. , 3.5],
[2. , 2.5, 3. , 3.5],
[2. , 2.5, 3. , 3.5]]).ravel()
将多维数组拉直成为一维
In [19]:
代码语言:javascript复制x.ravel()Out[19]:
代码语言:javascript复制array([1., 1., 1., 1., 2., 2., 2., 2., 3., 3., 3., 3.])In [20]:
代码语言:javascript复制y.ravel()Out[20]:
代码语言:javascript复制array([2. , 2.5, 3. , 3.5, 2. , 2.5, 3. , 3.5, 2. , 2.5, 3. , 3.5]).flatten()
和上面的ravel效果相同
In [21]:
代码语言:javascript复制x.flatten()Out[21]:
代码语言:javascript复制array([1., 1., 1., 1., 2., 2., 2., 2., 3., 3., 3., 3.])In [22]:
代码语言:javascript复制y.flatten()Out[22]:
代码语言:javascript复制array([2. , 2.5, 3. , 3.5, 2. , 2.5, 3. , 3.5, 2. , 2.5, 3. , 3.5])np.c_
将数值之间的值进行配对
In [23]:
代码语言:javascript复制np.c_[x.ravel(), y.ravel()]Out[23]:
代码语言:javascript复制array([[1. , 2. ],
[1. , 2.5],
[1. , 3. ],
[1. , 3.5],
[2. , 2. ],
[2. , 2.5],
[2. , 3. ],
[2. , 3.5],
[3. , 2. ],
[3. , 2.5],
[3. , 3. ],
[3. , 3.5]])


