Python numpy 入门系列 21 零散知识点

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() 函数

numpy.mean(a, axis, dtype, out,keepdims )
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

posted @ 2022-05-07 09:07  emanlee  阅读(102)  评论(0编辑  收藏  举报