温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Numpy生成ndarray的方法是什么

发布时间:2021-12-27 10:45:49 阅读:200 作者:iii 栏目:编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要讲解了“Numpy生成ndarray的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Numpy生成ndarray的方法是什么”吧!

什么是Numpy?

Numpy是Python开源的科学计算工具包,是高级的数值编程工具

  • 强大的N维数组对象:ndarray

  • 可以对数组结构数据进行运算(不用遍历循环)

  • 有随机数、线性代数、傅里叶变换等功能

如何安装?

安装anaconda科学计算环境

推荐使用anaconda,里面集成了许多常用的库,并且在配置环境时更容易上手。

下载地址:https://www.anaconda.com/download/

安装Numpy

方法一:安装anaconda后,numpy是可以直接使用的,无需二次安装。

方法二:没有安装anaconda可以使用pip install numpy安装。

安装jupyter notebooks(推荐使用)

方法一:安装anaconda后,jupyter notebooks是可以直接使用的,无需二次安装。

方法二:没有安装anaconda可以使用pip install jupyter安装。

Numpy基础数据结构

导入

推荐使用from numpy import np

不建议使用from numpy import *, 因为numpy中包含了大量与Python内建函数重名的函数。

生成ndarray

可以使用array生成数组
举个栗子:

import numpy as npar = np.array([[1,2,3,4],[1,2,3,4]])print(ar, type(ar))>>>[[1 2 3 4]  [1 2 3 4]] <class 'numpy.ndarray'>

除了np.array之外还有其他函数可以创建新数组,这里列出常用的几个:

arange # python range的数组版asarray # 将输入转换为ndarrayones # 根据给定的形状和类型生成全1的数组ones_like # 根据给定的数组生成形状一样的全1的数组zeros # 根据给定的形状和类型生成全0的数组zeros_like # 根据给定的数组生成形状一样的全1的数组eye # 生成一个N*N的特征矩阵(对角线为1,其余为0)linspance # 返回在间隔[开始,停止]上计算的num个均匀间隔的样本

这里以zeros,zeros_like以及linspance分别举例:

arr = np.zeros((3,5))print(arr)>>>[[0. 0. 0. 0. 0.]  [0. 0. 0. 0. 0.]  [0. 0. 0. 0. 0.]]s = np.array([list(range(10)),list(range(10,20))])print(s)print(np.zeros_like(s))>>>[[ 0  1  2  3  4  5  6  7  8  9]  [10 11 12 13 14 15 16 17 18 19]][[0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0]]print(np.linspace(10,20,num = 21)) #在1021之间生成print(np.linspace(10,20,num = 21, endpoint = False)) #endpoint默认为True,为False时不包含左边的值print(np.linspace(10,20,num = 21, retstep = True))# restep显示步长>>>[10.  10.5 11.  11.5 12.  12.5 13.  13.5 14.  14.5 15.  15.5 16.  16.5 17.  17.5 18.  18.5 19.  19.5 20. ][10.         10.47619048 10.95238095 11.42857143 11.9047619  12.38095238 12.85714286 13.33333333 13.80952381 14.28571429 14.76190476 15.23809524 15.71428571 16.19047619 16.66666667 17.14285714 17.61904762 18.0952381 18.57142857 19.04761905 19.52380952](array([10. , 10.511. , 11.512. , 12.513. , 13.514. , 14.515. ,       15.516. , 16.517. , 17.518. , 18.519. , 19.520. ]), 0.5)

这里除了常用的几个生成数组的函数外,列举一些常用的方法:

import numpy as npar = np.array([[1,2,3,4],[1,2,3,4]])print(ar, type(ar))print(ar.ndim)#返回数组的维度的个数print(ar.shape)#数组的维度,返回几行几列print(ar.size)#数组元素的个数print(ar.dtype)#元素的类型print(ar.itemsize)#数组中元素的大小>>>[[1 2 3 4] [1 2 3 4]] <class 'numpy.ndarray'>2(24)8int648

Numpy通用函数

数组形状变换(.T/.reshape()/.resize())

.T是转置函数,转置函数对一维数组无影响

# .Timport numpy as npar1 = np.arange(10)ar2 = np.zeros((2,5))print(ar1.T)print(ar2.T)#转置函数>>>[0 1 2 3 4 5 6 7 8 9][[0. 0.] [0. 0.] [0. 0.] [0. 0.] [0. 0.]]

.reshape(),直接更改数组的形状,但更改前后数组元素个数必须相同

ar1 = np.arange(10)print(ar1.reshape(2,5))print(np.reshape(np.arange(16),(2,8)))>>>[[0 1 2 3 4] [5 6 7 8 9]][[ 0  1  2  3  4  5  6  7] [ 8  9 10 11 12 13 14 15]]

.resize()

print(np.resize(np.arange(16),(3,5)))  # resize当后面的数组元素个数小于前面生成的数量时,按照顺序迭代print(np.resize(np.arange(12),(3,5)))  # resize当后面的数组元素个数大于前面的生成的数量,则随机填充>>>[[ 0  1  2  3  4] [ 5  6  7  8  9] [10 11 12 13 14]][[ 0  1  2  3  4] [ 5  6  7  8  9] [10 11  0  1  2]]
数组的复制

和python中的深浅拷贝类似:Python | Python学习之深浅拷贝

数组的类型转化

.astype()可以将数组中元素的类型进行转化,在numpy中元素类型有以下几种(太多了就不都写了):

int8uint8 #有符号和无符号的8整位整数int16uint16 #有符号和无符号的16整位整数int32uint32 #有符号和无符号的32整位整数int64uint64 #有符号和无符号的64整位整数float16 #半精度float32 #单精度float64 #双精度bool #布尔.....

举个类型转换的栗子:

ar1 = np.arange(10,dtype=float)ar2 = ar1.astype(np.int64)print(ar1,ar2)>>>[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.] [0 1 2 3 4 5 6 7 8 9]
数组的堆叠

数组的堆叠有hstack(),vstack()以及stack(),下面分别举例:

a = np.arange(10)b = np.arange(10,20)print(ar1,ar2)# 横向链接print(np.hstack((a,b)))# 竖向链接a = np.array([[1],[2],[3]])b = np.array([['a'],['b'],['c']])print(np.vstack((a,b)))# 任意堆叠a = np.arange(10)b = np.arange(10,20)print(np.stack((a,b),axis=1)) # 竖向堆叠print(np.stack((a,b))) # 横向堆叠>>>>[0 1 2 3 4 5 6 7 8 9] [10 11 12 13 14 15 16 17 18 19][ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19][['1'] ['2'] ['3'] ['a'] ['b'] ['c']][[ 0 10] [ 1 11] [ 2 12] [ 3 13] [ 4 14] [ 5 15] [ 6 16] [ 7 17] [ 8 18] [ 9 19]][[ 0  1  2  3  4  5  6  7  8  9] [10 11 12 13 14 15 16 17 18 19]]
数组拆分

数组拆分同样分为横向拆分和竖向拆分。

# 数组拆分ar = np.arange(16).reshape(4,4)print(ar)print(np.hsplit(ar,2)) #纵向拆分print(np.vsplit(ar,2)) #横向拆分>>>[[ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11] [12 13 14 15]][array([[ 0,  1],       [ 4,  5],       [ 8,  9],       [12, 13]]), array([[ 2,  3],       [ 6,  7],       [10, 11],       [14, 15]])][array([[0, 1, 2, 3],       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],       [12, 13, 14, 15]])]
常用计算函数

这里的计算函数与Python中的计算函数用法相同,这里不再过多论述。

#计算函数np.mean() #求平均值np.max() #最大值np.min() #最小值np.gtd() #标准差np.var() #方差np.sum() # 其中参数axis=0按列求和axis=1按行求和

感谢各位的阅读,以上就是“Numpy生成ndarray的方法是什么”的内容了,经过本文的学习后,相信大家对Numpy生成ndarray的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:http://blog.itpub.net/31556785/viewspace-2216600/

AI

开发者交流群×