Numpy 函数总结 (不断更新)

本篇主要收集一些平时见到的 Numpy 函数。

numpy.random.seed & numpy.random.RandomState

np.random.seed()np.random.RandomState 都用于生成随机数种子,np.random.seed() 是可以直接调用的方法,而 np.random.RandomState 则是一个产生随机数的容器,使用时需要创建实例对象,进而调用实例方法,如 np.random.RandomState(42).uniform()

随机数种子 seed 只有一次有效,在下一次调用产生随机数函数前没有设置 seed,则还是产生随机数。如果需要每次都产生随机数,则可以将随机数seed设置成None,或者不设置。

>>> import numpy as np

>>> np.random.seed(42)
>>> np.random.randint(1, 10, 5)  # array([5, 1, 2, 6, 1])

>>> np.random.seed(42)
>>> np.random.randint(1, 10, 5)  # array([5, 1, 2, 6, 1])

>>> np.random.randint(1, 10, 5)  # array([8, 8, 3, 6, 5])
>>> from numpy.random import RandomState

>>> r = RandomState(42)
>>> r.randint(1, 10, 5)    # array([9, 9, 7, 3, 9])

>>> r = RandomState(42)
>>> r.randint(1, 10, 5)    # array([9, 9, 7, 3, 9])

>>> r = RandomState(None)
>>> r.randint(1, 10, 5)    # array([8, 3, 2, 6, 5])
>>> import random  # 使用Python的Random模块
>>> random.seed(42)
>>> random.sample(range(10), 5)  # [1, 0, 4, 9, 6]

>>> random.sample(range(10), 5)  # [6, 9, 1, 4, 5]

numpy.tile

numpy.tile(A, n) 用于将一整个数组 A 重复 n 次。 下面是一个简单的例子:

>>> a = [1,2,3,4]
>>> np.tile(a, 3)  # array([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4])

然而如果 n 的长度大于 1,则情况就略复杂了。下面看个例子:

>>> a = np.array([1,2,3])
>>> np.tile(a, (3, 3))

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

上面的原始数组 a 为一维,n 的长度为 2,则 tile 函数会将原来的一维拓展为 2 维,再在每一维上重复相应的数组,相当于下面两步:

>>> a = np.array([1,2,3])
>>> a = np.expand_dims(a, axis=0)
# a 为 array([[1, 2, 3]])
>>> np.tile(a, (3, 3))

上面的情况是 n 的长度大于 a 的维度,另一种情况是 n 的长度小于 a 的维度:

>>> b = np.array([[1,2,3], [4,5,6]])
>>> np.tile(b, 2)

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

上面的情况是 b 的维度为 2,n 的长度为1,则同样 n 会被扩展为 2,不足的维度用 1 填充,即变成 (1, 2),所以上例中 b 的第一维没有被复制,被复制的是第二维。最后按惯例是一个复杂点的例子:

>>> c = np.arange(27).reshape((3,3,3))
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]],

       [[18, 19, 20],
        [21, 22, 23],
        [24, 25, 26]]])

>>> np.tile(c, (2,2,2))
array([[[ 0,  1,  2,  0,  1,  2],
        [ 3,  4,  5,  3,  4,  5],
        [ 6,  7,  8,  6,  7,  8],
        [ 0,  1,  2,  0,  1,  2],
        [ 3,  4,  5,  3,  4,  5],
        [ 6,  7,  8,  6,  7,  8]],

       [[ 9, 10, 11,  9, 10, 11],
        [12, 13, 14, 12, 13, 14],
        [15, 16, 17, 15, 16, 17],
        [ 9, 10, 11,  9, 10, 11],
        [12, 13, 14, 12, 13, 14],
        [15, 16, 17, 15, 16, 17]],

       [[18, 19, 20, 18, 19, 20],
        [21, 22, 23, 21, 22, 23],
        [24, 25, 26, 24, 25, 26],
        [18, 19, 20, 18, 19, 20],
        [21, 22, 23, 21, 22, 23],
        [24, 25, 26, 24, 25, 26]],

       [[ 0,  1,  2,  0,  1,  2],
        [ 3,  4,  5,  3,  4,  5],
        [ 6,  7,  8,  6,  7,  8],
        [ 0,  1,  2,  0,  1,  2],
        [ 3,  4,  5,  3,  4,  5],
        [ 6,  7,  8,  6,  7,  8]],

       [[ 9, 10, 11,  9, 10, 11],
        [12, 13, 14, 12, 13, 14],
        [15, 16, 17, 15, 16, 17],
        [ 9, 10, 11,  9, 10, 11],
        [12, 13, 14, 12, 13, 14],
        [15, 16, 17, 15, 16, 17]],

       [[18, 19, 20, 18, 19, 20],
        [21, 22, 23, 21, 22, 23],
        [24, 25, 26, 24, 25, 26],
        [18, 19, 20, 18, 19, 20],
        [21, 22, 23, 21, 22, 23],
        [24, 25, 26, 24, 25, 26]]])

最后出来的结果其实非常具有对称的美感。

另外与 numpy.tile() 有密切联系的函数为 numpy.repeat() ,其功能是对应元素重复:

>>> np.repeat(13, 5)   # array([13, 13, 13, 13, 13])

numpy.repeat() 可以制定要重复的轴 (axis),但如果不指定,则将原数组拉伸为 1 维数组后再对应元素重复:

>>> a = np.array([[1,2], [3,4]])
>>> np.repeat(a, 3)  # array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4])

>>> np.repeat(a, 3, axis=1)
array([[1, 1, 1, 2, 2, 2],
       [3, 3, 3, 4, 4, 4]])

/

原文地址:https://www.cnblogs.com/massquantity/p/10289480.html

时间: 2024-10-12 00:02:35

Numpy 函数总结 (不断更新)的相关文章

【机器学习算法实现】logistic回归__基于Python和Numpy函数库

[机器学习算法实现]系列文章将记录个人阅读机器学习论文.书籍过程中所碰到的算法,每篇文章描述一个具体的算法.算法的编程实现.算法的具体应用实例.争取每个算法都用多种语言编程实现.所有代码共享至github:https://github.com/wepe/MachineLearning-Demo     欢迎交流指正! (2)logistic回归__基于Python和Numpy函数库 1.算法简介 本文的重点放在算法的工程实现上,关于算法的原理不具体展开,logistic回归算法很简单,可以看看A

Python机器学习之NumPy函数库

NumPy函数库是Python开发环境的一个独立模块,而且大多数Python发行版没有默认安装NumPy函数库,因此在安装Python之后必须单独安装NumPy函数库. 在Python shell开发环境中输入下列命令: >>> from numpy import * 如果没报错就表明NumPy函数库正确安装. 上述命令将NumPy函数库中的所有模块引入当前的命名空间. 然后在Python shell开发环境中输入下述命令: >>> random.rand(4,4) a

Laravel 5.1 数组帮助函数(随发现更新)

array_add 向一个数组中添加指定键值,如果键值不存在则添加,如果键本身就存在 那么就不添加: $test_array = ['name' => '大K', 'age' => 27]; $test_array = array_add($test_array, 'age', 24); // (没有效果)添加后:['name' => '大K', 'age' => 27] $test_array2 = ['id' => 1]; $test_array2 = array_add

【机器学习算法实现】kNN算法__手写识别——基于Python和NumPy函数库

[机器学习算法实现]系列文章将记录个人阅读机器学习论文.书籍过程中所碰到的算法,每篇文章描述一个具体的算法.算法的编程实现.算法的具体应用实例.争取每个算法都用多种语言编程实现.所有代码共享至github:https://github.com/wepe/MachineLearning-Demo     欢迎交流指正! (1)kNN算法_手写识别实例--基于Python和NumPy函数库 1.kNN算法简介 kNN算法,即K最近邻(k-NearestNeighbor)分类算法,是最简单的机器学习算

numpy函数库中一些常用函数的记录

numpy函数库中一些常用函数的记录 最近才开始接触python,python中为我们提供了大量的库,不太熟悉,因此在<机器学习实战>的学习中,对遇到的一些函数的用法进行记录. (1)mat( ) numpy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素.虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可以得到不同的结果,其中numpy函数库中matrix与MATLAB中matrices等价. 调用mat( )函数可以将数组转

numpy函数库中一些经常使用函数的记录

##numpy函数库中一些经常使用函数的记录 近期才開始接触python,python中为我们提供了大量的库,不太熟悉.因此在<机器学习实战>的学习中,对遇到的一些函数的使用方法进行记录. (1)mat( ) numpy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都能够用于处理行列表示的数字元素. 尽管他们看起来非常类似,可是在这两个数据类型上运行同样的数学运算能够得到不同的结果,当中numpy函数库中matrix与MATLAB中matrices等价. 调用mat( )

JS函数集锦 持续更新..

//1.打开窗口function WinOpen(url, heightV, widthV) { var iTop2 = (window.screen.availHeight - 20 - heightV) / 2; var iLeft2 = (window.screen.availWidth - 10 - widthV) / 2; var params = 'menubar:no;dialogHeight=' + heightV + ';dialogWidth=' + widthV + ';d

cs231n(一) KNN 和一些python numpy 函数

第一个作业的第一个问题,写KNN分类器,KNN的原理本身描述起来还是比较简单, 用到的一些函数: (1)numpy.flatnonzero(): 该函数输入一个矩阵,返回扁平化后矩阵中非零元素的位置(index) 这是官方文档给出的用法,非常正规,输入一个矩阵,返回了其中非零元素的位置 1 >>> x = np.arange(-2, 3) 2 >>> x 3 array([-2, -1, 0, 1, 2]) 4 >>> np.flatnonzero(x

php中自己总结的函数(持续更新)

每一种编程语言在用的过程中都会发现有时候要一种特定需求的功能函数,结果没有内置这样的函数,这个时候就需要自己根据已有函数编写尽可能简单的函数,下面是我在做php相关工作时积累下的函数,会持续更新,您要是有好的也可以推荐给我,我在这里统一展示给大家. 第一,生成随机字符串 代码如下面所示,要注意以下,查看手册可以看到,php在版本4.2.0以前生成随机数时,需要先给随机数发生器播种,PHP_VERSION>4.2.0的版本,系统自动完成播种工作,所以这里要做下判断. <?php function