前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python入门教程(一):初识Numpy

Python入门教程(一):初识Numpy

作者头像
数据万花筒
发布2020-12-30 15:20:29
3650
发布2020-12-30 15:20:29
举报
文章被收录于专栏:数据万花筒

Numpy是Python中较为常用的模块,今天我们就从Numpy的基础应用讲起,非常适合0基础的小白哦,python系列的基础课程也会持续更新。

首先,我们在运用某个模块之前需要先导入这个模块。

代码语言:javascript
复制
import numpy
numpy.__version__

详解Python列表List

创建一个数值型的列表

代码语言:javascript
复制
L = list(range(10))
L
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
type(L[0])
# int

创建一个字符串列表

代码语言:javascript
复制
L2 = [str(c) for c in L]
L2
# ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# 查看数据类型
type(L2[0])
# str

创建一个异构列表

什么是异构列表?因为Python动态类型特征,所以list里面的元素可以是不同类型,如下所示

代码语言:javascript
复制
L3 = [True, "2", 3.0, 4]
[type(item) for item in L3]
# [bool, str, float, int]

那么这个动态的列表和固定类型的Numpy数组之间的区别是什么呢?请看下图,数组基本上包括一个指向连续数据块的指针;而列表包含一个指向指针块的指针,其中每一个指针对应一个完整的Python对象,因此列表可以用不同的数据类型进行填充。

怎么去理解上面这些专业术语呢?换句话来说,就是Array数组整个数据块共用一个指针,而List每一个元素都有一个指针,所以List具有多元动态性!

代码语言:javascript
复制
代码语言:javascript
复制

Python中的数组Array的数据类型介绍

首先,我们先来了解下Python中Numpy的标准数据类型,如下表所示,包括了整型,浮点型,布尔值等多种类型,可以根据自己的需求选择相应的数据类型。

运用Numpy模块创建简单的Array

Python中内置的数组(array)模块可用于创建统一类型的密集数组,代码里的‘i’是一个动态类型码,表示数据为整型。

代码语言:javascript
复制
import array
L = list(range(10))
A = array.array('i', L)
A
# output array('i', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
代码语言:javascript
复制
另外,我们可以给Python的模块取个别名,方便我们之后调用,如下代码示例。
代码语言:javascript
复制
import numpy as np

# 创建一个integer类型的数组:
np.array([1, 4, 2, 5, 3])
代码语言:javascript
复制
Python中的Numpy模块不同于List,其要求数组必须是同一类型的数据,如果数据类型不匹配,Numpy会向上转换,详细情况请看如下示例。
代码语言:javascript
复制
np.array([3.14, 4, 2, 3])
# array([ 3.14,  4.  ,  2.  ,  3.  ])
代码语言:javascript
复制
该示例中,将整型的4,2,3强行转换为float浮点型的数据。
代码语言:javascript
复制
代码语言:javascript
复制
如果你希望明确的设置数组的数据类型,请使用dtype关键字。
代码语言:javascript
复制
np.array([1, 2, 3, 4], dtype='float32')
# array([ 1.,  2.,  3.,  4.], dtype=float32)
代码语言:javascript
复制
代码语言:javascript
复制
利用python创建多维嵌套数组。
代码语言:javascript
复制
# 通过循环体创建多维数组
np.array([range(i, i + 3) for i in [2, 4, 6]])

array([[2, 3, 4],
       [4, 5, 6],
       [6, 7, 8]])
代码语言:javascript
复制

运用Numpy模块和内置函数高效创建Array

np.zeros ()创建数值为0的数组

代码语言:javascript
复制
np.zeros(10, dtype=int)
# array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
代码语言:javascript
复制
np.ones()创建值为1的数组
代码语言:javascript
复制
np.ones((3, 5), dtype=float)
# array([[ 1.,  1.,  1.,  1.,  1.],
#        [ 1.,  1.,  1.,  1.,  1.],
#        [ 1.,  1.,  1.,  1.,  1.]])
代码语言:javascript
复制
np.full()创建任意值的数组
代码语言:javascript
复制
np.full((3, 5), 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]])
代码语言:javascript
复制
代码语言:javascript
复制
np.arange()创建一个现行序列数组
代码语言:javascript
复制
下列示例的具体含义为创建一个从0开始到20结束,步长为2的数组。
代码语言:javascript
复制
np.arange(0, 20, 2)
# array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
代码语言:javascript
复制
np.linspace()创建一个5个元素的数组,这5个数均匀地分配到0-1
代码语言:javascript
复制
np.linspace(0, 1, 5)
# array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ])
代码语言:javascript
复制
np.random.random()创建在0-1之间均匀分布的随机数组成的数组
代码语言:javascript
复制
np.random.random((3, 3))
# array([[ 0.99844933,  0.52183819,  0.22421193],
#        [ 0.08007488,  0.45429293,  0.20941444],
#       [ 0.14360941,  0.96910973,  0.946117  ]])
代码语言:javascript
复制
np.random.normal()创建正太分布的随机数组
代码语言:javascript
复制
np.random.normal(0, 1, (3, 3))
# array([[ 1.51772646,  0.39614948, -0.10634696],
#        [ 0.25671348,  0.00732722,  0.37783601],
#        [ 0.68446945,  0.15926039, -0.70744073]])
代码语言:javascript
复制
np.random.randint()创建随机整型数组
代码语言:javascript
复制
np.random.randint(0, 10, (3, 3))
# array([[2, 3, 4],
#        [5, 7, 8],
#        [0, 5, 0]])
代码语言:javascript
复制
np.eye()创建单位矩阵
代码语言:javascript
复制
np.eye(3)
# array([[ 1.,  0.,  0.],
#        [ 0.,  1.,  0.],
#       [ 0.,  0.,  1.]])
代码语言:javascript
复制
np.empty()创建整型数组成的未初始化的数组,数组的值是内存空间内的任意的值。
代码语言:javascript
复制
np.empty(3)
# array([ 1.,  1.,  1.])
代码语言:javascript
复制
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据万花筒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档