NumPy

Posted huiyichanmian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NumPy相关的知识,希望对你有一定的参考价值。

一、NumPy简介

NumPy是使用Python进行科学计算的基本软件包。它包含以下内容:

  • 强大的N维数组对象

  • 复杂的(广播)功能

  • 集成C / C ++和Fortran代码的工具

  • 有用的线性代数,傅立叶变换和随机数功能

除了其明显的科学用途外,NumPy还可以用作通用数据的高效多维容器。可以定义任意数据类型。这使NumPy可以无缝,快速地与各种数据库集成。

NumPy包的核心是ndarray对象,n维数组,电脑上的所有数据都是数字形式保存

二、创建ndarray

1、使用np.array()由Python中的list创建

注意:

  numpy默认ndarray的所有元素的类型是相同的

  如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int

# 一维数组
>>>l = [1,2,3,4,5,6]
>>>l
[1,2,3,4,5,6]
>>>type(l)
list
>>>nd = np.array(l)
>>>nd 
array([1, 2, 3, 4, 5, 6])
>>>type(nd)
numpy.ndarray

# 二维数组
>>>l2 = [[1,3,5,7],[2,4,6,8]]
>>>nd2 = np.array(l2)
>>>nd2 
array([[1, 3, 5, 7],
       [2, 4, 6, 8]])

扩展:ndarray中的方法运行时间与Python自定义方法运行时间对比

使用ndarray中的方法

>>>x = np.arange(0,1000000,1)
>>>%timeit x.sum()    # %timeit在ipython的魔法方法,计算平均运行速度
7.49 µs ± 297 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)         

使用Python自定义方法

>>> def sum2(x):
...:     ret=0
...:     for i in x:
...:         ret+=i
...:     return ret

>>> %timeit sum2(x)
943 µs ± 21.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

2、使用np的routines函数创建

2.1、np.ones(shape,dtype=None, order=‘C‘)

>>>np.ones(shape=(5,5),dtype=np.int16)
array([[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1]], dtype=int16)

2.2、np.zeros(shape, dtype=float,order=‘C‘)

>>>np.zeros(shape=(2,3,4),dtype=np.float16,order=C)
array([[[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]],

       [[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]]], dtype=float16)

2.3、np.full(shape,fill_value,dtype=None,order=‘C‘)

>>>np.full(shape=(3,5),fill_value=3.14)
array([[3.14, 3.14, 3.14, 3.14, 3.14],
       [3.14, 3.14, 3.14, 3.14, 3.14],
       [3.14, 3.14, 3.14, 3.14, 3.14]])

2.4、np.eye(N,M=None,k=0,dtype=float)

对角线为1,其他都为0(单位矩阵)

>>>np.eye(N=5)
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])

2.5、np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None,axis=0)

等差数列,默认元素个数为50

>>>np.linspace(0,100,num=101)
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.,  27.,  28.,  29.,  30.,  31.,  32.,
        33.,  34.,  35.,  36.,  37.,  38.,  39.,  40.,  41.,  42.,  43.,
        44.,  45.,  46.,  47.,  48.,  49.,  50.,  51.,  52.,  53.,  54.,
        55.,  56.,  57.,  58.,  59.,  60.,  61.,  62.,  63.,  64.,  65.,
        66.,  67.,  68.,  69.,  70.,  71.,  72.,  73.,  74.,  75.,  76.,
        77.,  78.,  79.,  80.,  81.,  82.,  83.,  84.,  85.,  86.,  87.,
        88.,  89.,  90.,  91.,  92.,  93.,  94.,  95.,  96.,  97.,  98.,
        99., 100.])

2.6、np.random.randint(low, high=None, size=None, dtype=‘l‘)

>>>np.random.randint(0,100,size=(5,5))
array([[74, 88, 31, 50, 86],
       [36, 30, 60, 82, 52],
       [75, 35, 13, 62, 56],
       [55, 81, 11, 31, 35],
       [70, 46, 37, 50, 15]])

以上是关于NumPy的主要内容,如果未能解决你的问题,请参考以下文章

'numpy.ndarray':对象不可调用错误

乐哥学AI_Python:Numpy索引,切片,常用函数

对数据进行去均值并转换为 numpy 数组

Jax 矢量化:vmap 和/或 numpy.vectorize?

微信小程序代码片段

VSCode自定义代码片段——CSS选择器