Numpy常用模块

一、什么是Numpy

    NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。英文官方文档中文文档

二、之前用到的模块

1、linspace()

    创建一个具有指定间隔的浮点数的数组。其参数如下官方文档

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

    参数含义如下:

start:返回样本数据开始点
stop:返回样本数据结束点
num:生成的样本数据量,默认为50
endpoint:True则包含stop;False则不包含stop
retstep:If True, return (samples, step), where step is the spacing between samples.(即如果为True则结果会给出数据间隔)
dtype:输出数组类型
axis:0(默认)或-1

    示例代码如下:

import numpy as np

array=np.linspace(0,100,5,endpoint=True,retstep=True,axis=0)

print(array)

    输出一个元祖:

(array([ 0., 25., 50., 75., 100.]), 25.0)

2、meshgrid()

    numpy.meshgrid()的作用就是生成网格点坐标矩阵。其参数如下官方文档

numpy.meshgrid(*xi, copy=True, sparse=False, indexing=‘xy’)

    参数含义如下:参考链接

*xi:x1, x2,…, xn。表示网格坐标的一维阵列。
indexing:输出的笛卡尔(‘xy’,默认值)或矩阵(‘ij’)索引。
sparse:bool类型,如果为True,返回一个稀疏矩阵保存在内存中,默认是False。
copy:bool类型,如果是False,返回一个原始数组的视图保存在内存中,默认是True。如果,sparse和copy都为False,将有可能返回一个不连续的数组。而且,如果广播数组的元素超过一个,可以使用一个独立的内存。如果想要对这个数组进行写操作,请先拷贝这个数组。

    返回值:

x1,x2,…,xn:ndarray(numpy数组)

    示例代码如下:

import numpy as np
x = np.linspace(0,1,3)
#[ 0.   0.5  1. ]
y = np.linspace(0,1,2)
# [0.  1.]
xv,yv = np.meshgrid(x,y)
print('xv:',xv)
print('yv:',yv)

输出如下:

xv: [[0. 0.5 1. ]
[0. 0.5 1. ]]
yv: [[0. 0. 0.]
[1. 1. 1.]]

    通过上面的例子,其实可以发现meshgrid函数将两个输入的数组x和y进行扩展,前一个的扩展与后一个有关,后一个的扩展与前一个有关,前一个是竖向扩展,后一个是横向扩展。因为,y的大小为2,所以x竖向扩展为原来的两倍,而x的大小为3,所以y横向扩展为原来的3倍。通过meshgrid函数之后,输入由原来的数组变成了一个矩阵。

3、vstack()和hstack()

    两个方法都是用作数据拼接,只不过拼接的维度方向不同,两个方法都只接受一个参数。

3.1、vstack()

    vstack要求拼接的数据具用相同的列数,如果列数不同,将会报错。vstack相当于将数据一行一行的向后堆叠,示例代码如下:

import numpy as np
array1=np.array([[0,1,2],[2,3,4]])
array2=np.array([3,4,5])
print(np.vstack(((array1,array2))))

    输出:

[[0 1 2]
[2 3 4]
[3 4 5]]

3.2、hstack()

    hstack要求数据具有有相同的行数,如果行数不同,将会报错。hstack将同一纬度的数据按照原始数据的顺序合并为一个新的列表,作为该维度新的数据。示例代码如下:

import numpy as np
array1=np.array([0,1,2])
array2=np.array([3,4,5])
print(np.hstack(((array1,array2))))

    输出:

[0 1 2 3 4 5]

4、ndarray.T

    numpy中的数组其实就是线性代数中的矩阵。矩阵是可以进行转置的。ndarray有一个T属性,可以返回这个数组的转置的结果。示例代码如下:

import numpy as np
array=np.array([[0,1,2],[2,3,4]])
print('原矩阵:',array)
print('转置矩阵:',array.T)

    输出:

原矩阵:
[[0 1 2]
[2 3 4]]
转置矩阵:
[[0 2]
[1 3]
[2 4]]

5、arange()

    该函数的作用是返回一个有终点和起点的固定步长的排列(可理解为一个等差数组)。其参数如下:

np.arange([start, ]stop, [step, ]dtype=None)

    参数含义如下:

  • start:起点值;可忽略不写,默认从0开始
  • stop:终点值;生成的元素不包括结束值
  • step:步长;可忽略不写,默认步长为1
  • dtype:默认为None,设置显示元素的数据类型

    不同参数个数情况介绍:

  • 一个参数时,参数值为终点值,起点取默认值0,步长取默认值1。
  • 两个参数时,第一个参数为起点值,第二个参数为终点,步长取默认值1。
  • 三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长,其中步长支持小数。

    示例代码如下:

import numpy as np
print("np.arange(7): ",np.arange(7))    
print("np.arange(3,7): ",np.arange(3,7)) 
print("np.arange(3,7,2): ",np.arange(3,7,2))
print("np.arange(3,7,0.5): ",np.arange(3,7,0.5))

    输出:

np.arange(7): [0 1 2 3 4 5 6]
np.arange(3,7): [3 4 5 6]
np.arange(3,7,2): [3 5]
np.arange(3,7,0.5): [3. 3.5 4. 4.5 5. 5.5 6. 6.5]

6、dot()

    获取矩阵乘积,参数如下:

np.dot(a, b, out=None)

    示例代码如下:

import numpy as np
print("np.dot(7,2): ",np.dot(7,2))    
print("np.dot([3,7],[2,3]): ",np.dot([3,7],[2,3])) 
print("np.dot([1,2],[[1,2],[2,3]]): ",np.dot([1,2],[[1,2],[2,3]]))

    输出如下:

np.dot(7,2): 14 -----即:7x2=14
np.dot([3,7],[2,3]): 27 -----即:3x2+7x3=27
np.dot([1,2],[[1,2],[2,3]]): [5 8] -----即:矩阵乘法

三、其他常用模块

1、ravel()

    ravel函数是将矩阵变为一个一维的数组,示例代码如下:

import numpy as np
array=np.array([[0,1,2],[2,3,4]])
print(array.ravel())

    输出:

[0 1 2 2 3 4]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值