7个罕见的Numpy函数!
本文介绍的是numpy中少见但是非常实用的7个函数。
In [1]:
代码语言:javascript复制import pandas as pd
import numpy as np
np.where()
功能和TensorFlow中的where函数相同,下面介绍用法
In [2]:
代码语言:javascript复制m = np.arange(0,15,2)
m
Out[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*2
Out[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*3
Out[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 np
In [16]:
代码语言:javascript复制x,y = np.mgrid[1:4:1, 2:4:0.5]
In [17]:
代码语言:javascript复制x
Out[17]:
代码语言:javascript复制array([[1., 1., 1., 1.],
[2., 2., 2., 2.],
[3., 3., 3., 3.]])
In [18]:
代码语言:javascript复制y
Out[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]])