numpy均匀分布_Python中的Numpy基础20问

1、什么是numpy?

一言以蔽之,numpy是python中基于数组对象的科学计算库。

提炼关键字,可以得出numpy以下三大特点:

  • 拥有n维数组对象;
  • 拥有广播功能(后面讲到);
  • 拥有各种科学计算API,任你调用;
370e2e1849cc0e3bf5eaa7e619af2655.png

2、如何安装numpy?

因为numpy是一个python库,所以使用python包管理工具pip或者conda都可以安装。

安装python后,打开cmd命令行,输入:

pip install numpy

即可完成安装。

3、什么是n维数组对象?

n维数组(ndarray)对象,是一系列同类数据的集合,可以进行索引、切片、迭代操作。

numpy中可以使用array函数创建数组:

import numpy 

4、如何区分一维、二维、多维?

判断一个数组是几维,主要是看它有几个轴(axis)。

一个轴表示一维数组,两个轴表示二维数组,以此类推。

每个轴都代表一个一维数组。

比如说,二维数组第一个轴里的每个元素都是一个一维数组,也就是第二个轴。

一维数组一个轴:

[1,2,3]

二维数组两个轴:

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

三维数组三个轴:

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

[[ 6, 7, 8],
[ 9, 10, 11]]]

以此类推n维数组。

5、如何创建n维数组?

numpy中常用array函数创建数组,传入列表或元组即可。

创建一维数组,并指定数组类型为int

import numpy 

创建二维数组:

import numpy 

还可以使用arange函数创建一维数字数组,用法类似python的range函数.

import numpy 

6、如何创建随机数组?

numpy的random模块用来创建随机数组。

  • random.rand函数,生成[0,1)均匀分布的随机数组
import numpy 
  • random.randn函数,生成数值成标准正态分布(平均值为0,标准差为1)的数组
import numpy 
  • random.randint函数,生成可以指定范围的随机整数数组
import numpy 
  • random.normal函数,生成数值成正态分布(可指定平均值、标准差)的数组
import numpy 

random模块还有其他函数,这里不多说。

0a8c9ffb99d2cc3c3f34e7370ef6a904.png

7、如何查看数组的维度?

前面说到,数组维度即代表轴的数量。

我们可以通过数组(ndarray)对象的ndim或shape属性,来查看轴的数量。

  • ndim属性直接返回维度值;
  • shape属性返回一个元组,元组的长度即代表维度值,里面的数字从左往右分别代表每一轴的元素数量。
import numpy 

8、如何查看数组有多少个元素?

数组(ndarray)对象的size属性可以查看数组包含元素总数。

import numpy 

还可以通过shape属性返回元素的乘积,来计算数组元素数量。

import numpy 

9、Numpy数组支持哪些数据类型?

Numpy支持的数据类型非常多,所以很适合做数值计算。下面给出常见的数据类型:dcf48f82b86206fe5a265dc9db794f37.png

10、如何查看数组的类型?

数组(ndarrry)对象提供dtype属性,用来查看数组类型。

import numpy 

11、如何改变数组的形状?

前面说过,数组的shape属性返回一个元组,能够反映数组的形状,包括维度以及每个轴的元素数量。

那么如果给定一个数组,怎么改变其形状呢?

常用的方式有两种:

  • reshape方法,它返回一个新的数组,而不能改变原始数组。
  • resize方法,无返回值,它更改了原始数组。

比如说我要将一个二维数组转换为三维数组。

import numpy 

reshape方法可以传入整数或者元组形式的参数。

传入的参数和shape属性返回的元组的含义是一样的。

例如, x2.reshape(1,2,3)是将二维数组转换成三维数组,参数个数代表要转换的维度,参数数字从左到右分别表示0轴、1轴、2轴的元素数量。

resize方法和reshape方法使用形式一样,区别是resize方法改变了原始数组形状。

import numpy 

12、如何对数组进行索引和切片操作?

numpy一维数组的索引和切片操作类似python列表,这里不多讲。

比如说取一维数组前三个元素。

import numpy 

重点是对多维数组的索引和切片。

多维数组有多个轴,那么就需要对每个轴进行索引。

例如,三维数组形状为(x,y,z),分别代表:0轴有x个元素、1轴有y个元素,2轴有z个元素。

对0、1、2轴进行索引,如果取o轴第2个元素、1轴第0个元素、2轴第3个元素,那么索引形式就为[2,0,3]。

import numpy 

切片也是同样道理。

如果取o轴前2个元素、1轴前1个元素、2轴后2个元素,那么切片形式就为[:2,:1,-2:]。

import numpy 

13、如何对数组里每个元素进行迭代?

说到迭代,大家很容易想到直接对数组直接使用for循环操作,对于一维数组来说,当然是可以的。

import numpy 

但对于多维数组,迭代是相对于0轴完成的,就是多维数组最外层的那一维。

你没有办法直接遍历数组里每一个元素,嵌套循环又太低效。

这个时候就需要用到flat方法,它可以将多维数组平铺为一维的迭代器。

import numpy 

14、如何将多维数组展开为一维数组?

数组(ndarray)对象提供了ravel方法,用来将多维数组展开为一维数组。

import numpy 

15、什么广播机制?

广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对多个数组的算术运算通常在相应的元素上进行。

较小的数组在较大的数组上“广播”,以便它们具有兼容的形状。

比如说一个一维数组乘以一个数字,相当于一维数组里每个元素都乘以这个数。a0710173503c7448f742edce89f1bb26.png

import numpy 

如果相同维度的数组进行运算,其shape相同,那么广播就是两个数组相同位数的元素进行运算。

98c9080c1de635cbfc7c7e71dbfd2b40.png
import numpy 

如果两个数组维度不同,进行运算,这里就触发了广播的两个规则。

  • 让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐;
  • 当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。

这两个规则保证了不同维度数组进行运算时,其维度自动调整成一致。

c93aa927571106518f1c7de7d8a85142.png
import numpy 

16、numpy中如何进行数值舍入操作?

  • around函数,用于四舍五入,返回一个新数组
import numpy 
  • floor函数,用于向下取整,返回一个新数组
import numpy 
  • ceil函数,用于向上取整,返回一个新数组
import numpy 

17、如何对数组进行转置操作?

numpy提供了transpose函数用以对数组进行维度的调换,也就是转置操作。

转置后返回一个新数组。

import numpy 

当然,可以用更简单的方法。

数组对象提供了T方法,用于转置,同样会返回一个新数组。

import numpy 

18、如何连接两个相同维度的数组?

numpy的concatenate 函数用于沿指定轴连接相同形状的两个或多个数组。

import numpy 

19、如何向数组添加值?

  • numpy的append 函数向数组末尾追加值,可以指定不同的轴。
import numpy 
  • numpy的insert 函数可以沿给定轴,在数组中任意位置插入数据。
import numpy 

20、如何对数组进行去重操作?

numpy的unique 函数用于去除数组中的重复元素,返回一个新数组。

import numpy 

unique函数还能返回重复元素的索引、计数等信息,可去查文档自定义参数。

未完待续!

参考资料

[1]

numpy文档: https://www.numpy.org.cn/

[2]

菜鸟教程: https://www.runoob.com/numpy/numpy-tutorial.html

-END-

往期精彩

超简单!基于Python搭建个人“云盘”

又一可视化神器pyecharts登场

推荐一些能提高生产力的 Python 库

Excel VS Python 谁更适合数据分析?

硬核!30 张图解 HTTP 常见的面试题

10个省时间的 PyCharm 技巧

python每日更换“必应图片”为“桌面壁纸”

教你使用Python下载全网视频!

END

关注【程序IT圈】,更多的Python好文输出

ec8766077850c287afc21f576ab1a37f.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值