栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

numpy数组模块

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

numpy数组模块

一.引入numpy:

import numpy as np

二.使用array方法创建数组:
1.numpy的array方法,用于创建自定义数组
(1)创建一个一维数组,对于这种整数,数据类型默认int64,可自行指定(见下)

arr = np.array([1,2,3],dtype='int32')   
print arr

执行:

[1, 2, 3]

(2)创建一个二维数组

arr = np.array([[1,2,3],[4,5,6]])   
print arr

执行:

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

数组和列表的区别是什么?
数组中存储的数据元素类型必须是统一类型,numpy会依据优先级将数组内容强制转成统一类型。
优先级:字符串 > 浮点型 > 整数

2.numpy的其他方法,用于创建一维规律数组
(1)ones创建一个全是1的数组:

np.ones(shape=(行数,列数))   

(2)linspace创建等差数列数组,定义数量:

np.linspace(起,止(会包括),num=数的量)   

比如:

np.linspace(0,100,num=5)

输出:

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

(3)arange创建等差数列数组,定义差值:

np.arange(起,止(不包括),step=差值)

比如:

np.arange(10,50,step=2)

输出:

array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42,
       44, 46, 48])

(3)random.randint创建随机整数数组,定义区间与行列

np.random.randint(区间下限,区间上限,size=(行,列))

比如

np.random.randint(0,100,size=(5,3))

输出

array([[19,  0, 17],
       [72, 29, 13],
       [69, 59, 68],
       [63, 54, 87],
       [70, 64,  0]])

三.numpy的数组属性查询
1.首先创建一个数组

arr = np.random.randint(0,100,size=(5,6))

输出为

array([[43, 96, 75,  1, 34, 88],
       [96,  2, 17, 34, 26, 57],
       [71, 36, 11, 11, 10, 29],
       [72, 46, 51,  4, 27, 75],
       [80, 42, 27, 55, 19, 43]])

2.查询上述数组的属性:
(1)arr.shape #返回的是数组的形状:(5, 6)
(2)arr.ndim #返回的是数组的维度:2
(3)arr.size #返回数组元素的个数:30
(4)arr.dtype #返回的是数组元素的类型:dtype('int64')
数组元素数据类型如下:

修改数组元素类型的方法:
1.创建时就指定:arr = np.array([1,2,3],dtype='int32') #默认是64位,改成32位可节省内存开支
2.修改已有数组:arr.dtype = 'uint8' (5)type(arr) #返回数组的数据类型(这是numpy的ndarray数据):numpy.ndarray

四.numpy数组的索引和切片
1.首先创建一个数组:

arr = np.random.randint(1,100,size=(5,6))
arr

输出为:

array([[68, 31, 72, 88, 62, 47],
       [54, 78, 43, 38, 94, 29],
       [15, 84, 25, 72, 34, 24],
       [81, 36, 77, 66, 94, 27],
       [53,  5,  3, 91,  3, 15]])

2.索引操作(类似列表):
(1)取出某行(行数从0起计):

arr[1]  #取出numpy数组中第二行数据

输出:

array([54, 78, 43, 38, 94, 29])

(2)取出多行:

arr[[1,3,4]] 

输出:

array([[37, 57, 26, 92, 91, 34],
       [ 5, 16, 47, 66, 51, 12],
       [54, 63, 20, 11, 94, 88]])

3.切片操作
(1)取出数组中指定范围行列之间的数据:

arr[行起:行止,列起:列止]  #如只取行,列起止及其之间的冒号可以省略,如只取列,可以省略行起止但不能省略之间冒号

比如:

arr[0:2,0:2]   #切出前两行的前两列的数据

输出:

array([[69, 80],
       [37, 57]])

(3)倒置数组指令::-1:
1.arr[::-1] #将数组的行倒置
2.arr[:,::-1] #将数组的列倒置
3.arr[::-1,::-1] #所有元素倒置

4.变形操作reshape:
将数组元素以指定的行列重组。
比如一维数组;

arr = np.array([47, 30, 42, 36, 82, 68,  4, 37, 17, 39, 91, 33,  7,  4,  5, 51, 23,
       89,  5, 56, 28, 81, 26, 46, 29, 10, 91, 23, 12, 11])

可变形成5行6列:

arr_1 = arr.reshape((6,5))

arr_1为:

array([[47, 30, 42, 36, 82],
       [68,  4, 37, 17, 39],
       [91, 33,  7,  4,  5],
       [51, 23, 89,  5, 56],
       [28, 81, 26, 46, 29],
       [10, 91, 23, 12, 11]])

五.numpy的数学操作:
1.数组级联操作concatenate
concatenate是np下属方法。可以拼接多个数组:

np.concatenate((数组1,数组2),axis=1)    #axis取1时是横向(行级联);取0时是纵向(列级联)

级联的两个数组必须是同一维度,行列相同

2.数学函数:
现有一数组:

arr = array([[69, 80,  7, 90, 31, 44],
             [37, 57, 26, 92, 91, 34],
             [13, 16, 93, 54, 87, 34],
             [ 5, 16, 47, 66, 51, 12],
             [54, 63, 20, 11, 94, 88]])

(1)sum求和:
sum是数组下属方法,可以求所有元素或者所有行、列的和。
比如:arr.sum() #求所有元素和,输出1482
arr.sum(axis=1) #求所有行元素和,输出array([321, 337, 297, 197, 330])
arr.sum(axis=0) #求所有列元素和,输出array([178, 232, 193, 313, 354, 212])
(2)max求最大值:

arr.max(axis=1)   #不写axis:求最大值;axis为1:求每行最大值;为0:求每列最大值

(3)三角函数sin、cos、sinc(反三角函数)、tan等等:
这些都是np下属方法。可以直接计算数字,不用写入数组
比如np.sin(2.5)输出0.5984721441039564
比如np.sin(arr),则计算每个数的sin值,输出:

array([[-0.11478481, -0.99388865,  0.6569866 ,  0.89399666, -0.40403765,
         0.01770193],
       [-0.64353813,  0.43616476,  0.76255845, -0.77946607,  0.10598751,
         0.52908269],
       [ 0.42016704, -0.28790332, -0.94828214, -0.55878905, -0.82181784,
         0.52908269],
       [-0.95892427, -0.28790332,  0.12357312, -0.02655115,  0.67022918,
        -0.53657292],
       [-0.55878905,  0.1673557 ,  0.91294525, -0.99999021, -0.24525199,
         0.0353983 ]])

(4)四舍五入:

numpy.around(a,decimals) #函数返回指定数字的四舍五入值。

参数说明:
a: 数组
decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置,不写则保留到个位数
比如

np.around(arr,-1)

输出

array([[70, 80, 10, 90, 30, 40],
       [40, 60, 30, 90, 90, 30],
       [10, 20, 90, 50, 90, 30],
       [ 0, 20, 50, 70, 50, 10],
       [50, 60, 20, 10, 90, 90]])

3.统计函数:

(1) numpy.ptp():计算数组中元素最大值与最小值的差(最大值 - 最小值)。
(2)numpy.median() 函数用于计算数组 a 中元素的中位数(中值)
(3)标准差arr[1].std()计算arr第一行所有数的标准差
(4)方差arr[:,0:1].var()计算arr第一列所有数的方差

六.numpy的矩阵操作
1.创建一个单位矩阵

np.eye(n)   #n为阶数

比如

np.eye(6)

输出

array([[1., 0., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0., 0.],
       [0., 0., 1., 0., 0., 0.],
       [0., 0., 0., 1., 0., 0.],
       [0., 0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 0., 1.]])

2.矩阵转置

arr.T    #该指令即可转置矩阵arr

3.矩阵乘法dot
dot是np下属方法。

np.dot(arr1, arr2)   #将矩阵arr1和矩阵arr2相乘
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/329454.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号