Python numpy 入门系列 22 零散知识点
np.swapaxes
numpy.swapaxes(arr, axis1, axis2)
arr
:输入的数组axis1
:对应第一个轴的整数axis2
:对应第二个轴的整数
swapaxes函数的功能很简单,作用是直接交换两个轴
np.random.uniform
借助numpy.random.uniform()方法,我们可以从均匀分布中获取随机样本,并使用此方法将随机样本作为numpy数组返回。
均匀分布
用法:numpy.random.uniform(low=0.0, high=1.0, size=None)
Return:以numpy数组形式返回随机样本。
范例1:
在此示例中,我们可以看到,通过使用numpy.random.uniform()方法,我们能够从均匀分布中获取随机样本并返回随机样本。
# import numpy import numpy as np import matplotlib.pyplot as plt # Using uniform() method gfg = np.random.uniform(-5, 5, 5000) plt.hist(gfg, bins = 50, density = True) plt.show()
函数原型: numpy.random.uniform(low,high,size)
- 功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.
- 参数介绍:
low: 采样下界,float类型,默认值为0;
high: 采样上界,float类型,默认值为1;
size: 输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k), 则输出 m * n * k 个样本,缺省时输出1个值。
返回值:ndarray类型,其形状和参数size中描述一致。
mean() 函数
mean()函数功能:求取均值
经常操作的参数为axis,以m * n矩阵举例:
axis 不设置值,对 m*n 个数求均值,返回一个实数
axis = 0:压缩行,对各列求均值,返回 1* n 矩阵
axis =1:压缩列,对各行求均值,返回 m *1 矩阵
np.testing.assert_equal
用法:
testing.assert_equal(actual, desired, err_msg='', verbose=True)
如果两个对象不相等,则引发 AssertionError。
给定两个对象(标量、列表、元组、字典或 numpy 数组),检查这些对象的所有元素是否相等。在第一个冲突值处引发异常。
当actual 和desired 之一是标量而另一个是数组 时,该函数检查数组 对象的每个元素是否等于标量。
此函数处理 NaN 比较,就好像 NaN 是 “normal” 数字一样。也就是说,如果两个对象在相同位置都有 NaN,则不会引发 AssertionError。这与关于 NaN 的 IEEE 标准形成对比,后者表示 NaN 与任何东西相比都必须返回 False。
参数:
- actual: array_like
-
要检查的对象。
- desired: array_like
-
预期的对象。
- err_msg: str,可选
-
失败时要打印的错误消息。
- verbose: 布尔型,可选
-
如果为 True,则将冲突值附加到错误消息中。
抛出:
- AssertionError
-
如果实际和期望不相等。
例子:
>>> np.testing.assert_equal([4,5], [4,6])
Traceback (most recent call last):
...
AssertionError:
Items are not equal:
item=1
ACTUAL:5
DESIRED:6
np.random.choice 从数组中随机抽取元素
参数replace
用来设置是否可以取相同元素:
True表示可以取相同数字;
False表示不可以取相同数字。
默认是True
参数p
p实际是个数组,大小(size)应该与指定的a相同,用来规定选取a中每个元素的概率,默认为概率相同
import numpy as np # 参数意思分别 是从a 中以概率P,随机选择3个, p没有指定的时候相当于是一致的分布 a1 = np.random.choice(a=5, size=3, replace=False, p=None) print(a1) # 非一致的分布,会以多少的概率提出来 a2 = np.random.choice(a=5, size=3, replace=False, p=[0.2, 0.1, 0.3, 0.4, 0.0]) print(a2) # replacement 代表的意思是抽样之后还放不放回去,如果是False的话,那么出来的三个数都不一样,如果是True的话, 有可能会出现重复的,因为前面的抽的放回去了。 # ———————————————— # 链接:https://blog.csdn.net/qfpkzheng/article/details/79061601
结果
[0 2 1]
[3 0 2]
sklearn.utils.shuffle
- sklearn.utils.shuffle(*arrays, random_state=None, n_samples=None)
X, Y = shuffle(X, Y, random_state=0)
Signature: shuffle(*arrays, random_state=None, n_samples=None)
Docstring:
Shuffle arrays or sparse matrices in a consistent way.
小例子(该方法可将数据顺序打乱,避免有序数据对模型的影响,常在数据处理部分使用)
import numpy as np from sklearn.utils import shuffle # x是特征 x = np.array([1,2,3,4,5]) # y是对应的标签 y = np.array([6,7,8,9,10]) # 进行随机打乱,这里random_state指定为固定值,则打乱结果相同 X,Y = shuffle(x,y,random_state=40)
# 查看打乱后的特征 print(x) print(X)
[1 2 3 4 5]
[3 1 2 5 4]
# 查看打乱后的标签,预期与特征的位置对应 print(y) print(Y)
[ 6 7 8 9 10]
[ 8 6 7 10 9]
链接:https://blog.csdn.net/qq_41664939/article/details/123293310
np.random.permutation
运行以下代码:
import numpy as np
np.random.seed(12)
random_index1=np.random.permutation(np.arange(10))
print("第一次运行:",random_index1)
random_index2=np.random.permutation(np.arange(10))
print("第一次运行:",random_index2)
输出:
第一次运行: [5 8 7 0 4 9 3 2 1 6]
第一次运行: [6 0 9 7 3 2 1 8 5 4]
链接:https://blog.csdn.net/qq_29463399/article/details/103044538
Python numpy.random中的shuffle和permutation函数的区别
如果传给permutation一个矩阵,它会返回一个新排列的矩阵副本;而shuffle只是对一个矩阵进行洗牌,无返回值。
permutation函数如果传入一个整数,它会返回一个乱序的数组;而shuffle的参数不能为整数。
代码实例:
import numpy as np
N=10
array=[1,2,3,4,5]
print np.random.permutation(N)
print np.random.shuffle(array)
print np.random.permutation(array)
输出结果如下:
[1 2 4 9 0 3 5 6 7 8]
None
[5 4 3 1 2]
链接:https://blog.csdn.net/DreamHome_S/article/details/78299121
shuffle
用于随机洗牌矩阵。以编程方式,使用种子数生成随机序列。如果使用相同的种子,则保证具有相同的随机序列。random_state
参数允许您向sklearn方法提供此随机种子。这很有用,因为它允许您为开发和测试目的重现随机性。所以,在shuffle
方法中,如果我对同一个数据集使用相同的random_state
,那么我总是保证有相同的洗牌。请考虑以下示例:
X = np.array([[1., 0.], [2., 1.], [0., 0.]])
X = shuffle(X, random_state=20)
如果这给了我下面的输出
array([[ 0., 0.],
[ 2., 1.],
[ 1., 0.]])
现在,我总是保证,如果我使用random_state = 20
,我将始终得到完全相同的洗牌。这个si对于单元测试特别有用,在单元测试中,您希望有可重复的结果来断言您要测试的条件。
希望能有帮助!
REF
https://vimsky.com/examples/usage/numpy-random-uniform-in-python.html
https://www.zhihu.com/question/424417883/answer/1703791656
https://blog.csdn.net/lilong117194/article/details/78397329/
https://vimsky.com/examples/usage/python-numpy.testing.assert_equal.html