Fork me on GitHub

7个罕见的Numpy函数

7个罕见的Numpy函数!

本文介绍的是numpy中少见但是非常实用的7个函数。

In [1]:

1
2
import pandas as pd
import numpy as np

np.where()

功能和TensorFlow中的where函数相同,下面介绍用法

In [2]:

1
2
m = np.arange(0,15,2)
m

Out[2]:

1
array([ 0,  2,  4,  6,  8, 10, 12, 14])

In [3]:

1
2
3
# 情形1

np.where(m, 1, -1)

Out[3]:

1
array([-1,  1,  1,  1,  1,  1,  1,  1])

上面结果中如何m为真则输出1,否则输出-1。在m的取值中0代表的就是False,其他的为True。

In [4]:

1
2
3
# 情形2

np.where(m>=2,1,-1)

Out[4]:

1
array([-1,  1,  1,  1,  1,  1,  1,  1])

判断条件是m大于等于2,则输出1;否则输出-1

In [5]:

1
2
3
# 情形3

np.where(m>=2)

Out[5]:

1
(array([1, 2, 3, 4, 5, 6, 7]),)

当执行完条件后面没有规定输出的内容,直接输出满足要求数据的索引值

In [6]:

1
m[np.where(m>=2)]

Out[6]:

1
array([ 2,  4,  6,  8, 10, 12, 14])

np.random.RandomState.rand(维度)

返回[0,1)之间的随机数

In [7]:

1
rdm = np.random.RandomState(seed=1)

In [8]:

1
rdm.rand()  # 返回单个0-1之间的数值

Out[8]:

1
0.417022004702574

如果不指定维度,就是返回0到1之间的某个数值

In [9]:

1
rdm.rand(2,3)   # 指定维度 3*2

Out[9]:

1
2
array([[7.20324493e-01, 1.14374817e-04, 3.02332573e-01],
[1.46755891e-01, 9.23385948e-02, 1.86260211e-01]])

In [10]:

1
rdm.rand(4,3)  # 4*3

Out[10]:

1
2
3
4
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()

将两个数值按垂直方向叠加

1
np.vstack(array1, array2)

In [11]:

1
2
array1 = np.array([1,2,3])
array2 = np.array([2,3,4])

In [12]:

1
np.vstack([array1,array2])

Out[12]:

1
2
array([[1, 2, 3],
[2, 3, 4]])

In [13]:

1
2
3
4
5
6
array3 = np.array([[1,2,3],
[4,5,6]
])
array4 = np.array([[5,6,7],
[8,9,10]
])

In [14]:

1
np.vstack([array3,array4])

Out[14]:

1
2
3
4
array([[ 1,  2,  3],
[ 4, 5, 6],
[ 5, 6, 7],
[ 8, 9, 10]])

np.mgrid()

np.mgrid[起始值:结束值:步长, 起始值:结束值:步长]

In [15]:

1
import numpy as np

In [16]:

1
x,y = np.mgrid[1:4:1, 2:4:0.5]

In [17]:

1
x

Out[17]:

1
2
3
array([[1., 1., 1., 1.],
[2., 2., 2., 2.],
[3., 3., 3., 3.]])

In [18]:

1
y

Out[18]:

1
2
3
array([[2. , 2.5, 3. , 3.5],
[2. , 2.5, 3. , 3.5],
[2. , 2.5, 3. , 3.5]])

.ravel()

将多维数组拉直成为一维

In [19]:

1
x.ravel()

Out[19]:

1
array([1., 1., 1., 1., 2., 2., 2., 2., 3., 3., 3., 3.])

In [20]:

1
y.ravel()

Out[20]:

1
array([2. , 2.5, 3. , 3.5, 2. , 2.5, 3. , 3.5, 2. , 2.5, 3. , 3.5])

.flatten()

和上面的ravel效果相同

In [21]:

1
x.flatten()

Out[21]:

1
array([1., 1., 1., 1., 2., 2., 2., 2., 3., 3., 3., 3.])

In [22]:

1
y.flatten()

Out[22]:

1
array([2. , 2.5, 3. , 3.5, 2. , 2.5, 3. , 3.5, 2. , 2.5, 3. , 3.5])

np.c_

将数值之间的值进行配对

In [23]:

1
np.c_[x.ravel(), y.ravel()]

Out[23]:

1
2
3
4
5
6
7
8
9
10
11
12
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]])

本文标题:7个罕见的Numpy函数

发布时间:2022年10月19日 - 19:10

原始链接:http://www.renpeter.cn/2022/10/19/7%E4%B8%AA%E7%BD%95%E8%A7%81%E7%9A%84Numpy%E5%87%BD%E6%95%B0.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea