目录

一、创建数组

1.1 从列表传入:array()

1.2 生成全0数组:zeros()

1.3 生成全1数组:ones()

1.4 fill(x)函数将数组设定为x:

1.5 类型转换:astype()

1.6 生成整数序列:arange()

1.7 生成等差数列:linspace()

1.8 生成随机数:random.rand(),random.randn(),random.randint()

1.9 查看变量类型:type()

1.10 查看数据的类型:dtype()

1.11 查看变量的形状:shape,size,ndim

二、索引和切片

2.1 常规索引

2.2 省略参数

2.3 案例:计算一部电影的累计票房

三、多维数组及其属性

3.1 查看数组属性

3.2 多维数组索引:

3.3 多维数组切片:

四、花式索引

4.1 一维花式索引

4.2 二维花式索引

4.3 不完全索引

4.4 where语句

五、数组类型

六、数组操作(以豆瓣10部高分电影为例)

6.1 数组排序:

6.2 其他常见函数:

七、多维数组操作

7.1 数组形状,shape和reshape,reshape不会修改原有的数组,而会返回一个新的数组

7.2 转置

7.3 数组连接

7.4 numpy内置函数(部分函数)


Numpy 是Python 的⼀种开源的数值计算拓展,这种⼯具可⽤来存储和处理⼤型矩阵。
Numpy的⼀个重要特性是数组计算。

导入numpy包的几种方法:

import numpy
import numpy as np       #导入numpy包并重命名为np
import numpy import *    #导入numpy的所有函数,但若是大工程函数可能相同,会报错

一、创建数组

1.1 从列表传入:array()

import numpy as np
# list = [1,2,3,4]
# a = np.ayyay(list)
a = np.array([1,2,3,4]) b = np.array([5,6,7,8])print(a)
print(a+1)    # a里的所有元素+1
print(a*2)    # a里的所有元素*2
print(a+b)    # a里的元素和b里的元素一一对应相加
[1 2 3 4]
[2 3 4 5]
[2 4 6 8]
[ 6  8 10 12]

1.2 生成全0数组:zeros()

a = np.zeros(5)    # 生成5个元素为0的数组(默认为浮点型)

1.3 生成全1数组:ones()

a = np.ones(5)                    # 生成5个元素为1的数组
a = np.ones(5,dtype = 'bool')     #类型改为布尔类型
a = np.ones(5,dtype = 'int')      

1.4 fill(x)函数将数组设定为x:

a = np.ones(5)    # 生成5个元素为1的数组
a.fill(5)
print(a)

1.5 类型转换:astype()

a=np.ones(5,dtype = 'int')
print(a)a=a.astype('float') # 若不进行类型转换,当填充的值为小数时,最终结果会默认为整数(舍去小数)
print(a)a.fill(2.5)
print(a)

1.6 生成整数序列:arange()

a = np.arange(1,10)    # 左闭右开
print(a)    # [1 2 3 4 5 6 7 8 9]a = np.arange(1,10,2)
print(a)    # [1, 3, 5, 7, 9]

1.7 生成等差数列:linspace()

# 生成范围为1-12,数量为12的等差数列
a = np.linspace(1,12,20)
print(a) '''
[ 1.          1.57894737  2.15789474  2.73684211  3.31578947  3.894736844.47368421  5.05263158  5.63157895  6.21052632  6.78947368  7.368421057.94736842  8.52631579  9.10526316  9.68421053 10.26315789 10.8421052611.42105263 12.        ]
'''

1.8 生成随机数:random.rand(),random.randn(),random.randint()

#生成10个0-1(不包括1)的随机数
a = np.random.rand(10)
print(a)
#生成10个服从标准正态分布的随机数
a = np.random.randn(10)
print(a) 
#生成10个范围在1-100间的随机数
a = np.random.randint(1,100,10)
print(a) 

1.9 查看变量类型:type()

np.random.randint(1,100,10)     #生成随机整数
print( type(a) )    # numpy.ndarray

1.10 查看数据的类型:dtype()

a = np.random.randint(1,100,10)     #生成随机整数
print(a.dtype)    # dtype('int32')

1.11 查看变量的形状:shape,size,ndim

a = np.random.randint(1,100,10)  #生成随机整数
print(a)
print(a.shape)   # (10,)   查看形状 行*列,该数据只有行没有列
print(a.size)    # 10      查看元素的数目
print(a.ndim)    # 1       查看维度

二、索引和切片

2.1 常规索引

a=np.array([0,1,2,3])
print(a[0]) # 0a[0]=10  #修改第一个元素的值
print(a) # [10,1,2,3]a=np.array([11,12,13,14,15])
a[1:3]  #取索引号1-2的数,左闭右开   [12,13] a[1:-2]  #负索引,正数第一个到倒数第二个    [12,13]a[-4:3]  #倒数第四个到正数第三个    [12,13]

2.2 省略参数

print(a[-2:]) #倒数第二个到最后   [14,15]print(a[::2])  #间隔为2,取所有   [11,13,15]

2.3 案例:计算一部电影的累计票房

ob=np.array([21000,21800,22100,23450])#计算每一天的票房
ob2=ob[1:]-ob[:-1]
print(ob2)    # [ 800,  300, 1350]

三、多维数组及其属性

3.1 查看数组属性

a=np.array([[0,1,2,3],[10,11,12,13]])
print(a)    a.shape #查看形状     (2,4)a.size  #查看数量      8a.ndim  #查看维度      2

3.2 多维数组索引:

a=np.array([[0,1,2,3],[10,11,12,13]])
print(a[1,3])  #a[行,列],第二行第四列 注意:索引是从0开始的   a[0,1]=15 #更改
print(a)print(a[0]) #索引第一行print(a[:,3]) #索引列,注意前面有冒号,所有行第四列
13
[[ 0 15  2  3][10 11 12 13]]
[ 0 15  2  3]
[ 3 13]

3.3 多维数组切片:

a=np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],[30,31,32,33,34,35],[40,41,42,43,44,45]])
print(a)
print(a[0,3:5])   # 取第一行第四个和第五个元素,即[0,4][0,5]元素
print(a[-2:,-2:]) # 最后两行的最后两列
print(a[:,2])     # 得到第三列
print(a[2::2,::2])# 取第三行到最后一行,间隔一行的行数,所有列中间隔一列的列数
[[ 0  1  2  3  4  5][10 11 12 13 14 15][20 21 22 23 24 25][30 31 32 33 34 35][40 41 42 43 44 45]]
[3 4]
[[34 35][44 45]]
[ 2 12 22 32 42]
[[20 22 24][40 42 44]]

切片在numpy数组中是引用,当引用的变量的元素改变时,被引用的变量中的元素也会变

a=np.array([0,1,2,3,4])
b=a[0:2] # b = [0,1]
b[0]=10
print(a)     # [10  1  2  3  4]

解决情况:copy()

a=np.array([0,1,2,3,4])
b=a[0:2].copy() # b = [0,1]
b[0]=10
print(a)    

四、花式索引

4.1 一维花式索引

a=np.arange(0,100,10)
index=[1,2,-3]
y=a[index]
print(y)    # [10 20 70]

布尔数组索引:

a=np.arange(0,100,10)
#mask必须是布尔数组,长度必须和数组长度相同
mask=np.array([0,2,2,3,0,1,2,0,1,1],dtype=bool)
#在mask定义的位置上为true的进行索引。索引位置:1,2,3,5,6,8,9
print(a[mask])   # [10, 20, 30, 50, 60, 80, 90])

4.2 二维花式索引

a=np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],
[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])
print(a)
# 返回第一列第一行,第二列第二行,第三列第三行,第四列第四行,第五列第五行的元素
print(a[(0,1,2,3,4),(0,1,2,3,4)])
# 返回第四行到最后一行,奇数列的元素
print(a[3:,::2])
[[ 0  1  2  3  4  5][10 11 12 13 14 15][20 21 22 23 24 25][30 31 32 33 34 35][40 41 42 43 44 45][50 51 52 53 54 55]]
[ 0 11 22 33 44]
[[30 32 34][40 42 44][50 52 54]]
​
a=np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],
[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])
print(a)
mask=np.array([1,0,1,0,0,1],dtype=bool)
print(a[mask,2])   #第一行,第三行,最后一行,第三列的元素    [ 2, 22, 52]
​

4.3 不完全索引

a=np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],
[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])
print(a)y=a[:3] # 前三行所有列的元素
[[ 0  1  2  3  4  5][10 11 12 13 14 15][20 21 22 23 24 25]]
a=np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],
[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])
print(a)con=np.array([0,1,1,0,1,0],dtype=bool)
print(a[con])    # #取2,3,5,行,所有列的元素
[[10 11 12 13 14 15][20 21 22 23 24 25][40 41 42 43 44 45]]

4.4 where语句

where函数会返回所有非零元素的索引

a=np.array([0,12,5,20])
print(a>10)              # 返回元素里大于10的布尔值print(np.where(a>10))    # 返回>10的元素的索引的元组print(a[a>10])           # 返回>10的元素print(a[np.where(a>10)]) # a[a里>10的索引]
[False  True False  True]
(array([1, 3], dtype=int64),)
[12 20]
[12 20]

五、数组类型

#类型转换
a=np.array([1,5,-3],dtype=float)
print(a)#asarray函数 (个人认为不如用上面那个)
a=np.array([1,2,3])
b = np.asarray(a,dtype=float)
print(a)
print(b)#astype
a=np.array([4,5,6])
b = a.astype(float)
print(a)
print(b)
[ 1.  5. -3.]
[1 2 3]
[1. 2. 3.]
[4 5 6]
[4. 5. 6.]

六、数组操作(以豆瓣10部高分电影为例)

mv_name=['肖申克的救赎','控方证人','美丽人生','阿甘正传','霸王别姬','泰坦尼克号','辛德勒的名单','这个杀手不太冷','疯狂动物城','海豚湾']
#电影名称
mv_num=np.array([692795,42995,327855,580897,478523,157074,306904,662552,284652,159302])#评分人数
mv_score=np.array([9.6,9.5,9.5,9.4,9.4,9.4,9.4,9.3,9.3,9.3])#评分
mv_length=np.array([142,116,116,142,171,194,195,133,109,92])#电影时长(分钟)

6.1 数组排序:

#sort函数
print(np.sort(mv_num))    #未改变原有数组
print(mv_num)             #argsort函数,返回从小到大的排列数组中的索引位置
order=np.argsort(mv_num)
print(order)print(mv_name[order[0]])   #找到观影人数最少的电影的名字
print(mv_name[order[-1]])   #找到观影人数最多的电影的名字
[ 42995 157074 159302 284652 306904 327855 478523 580897 662552 692795]
[692795  42995 327855 580897 478523 157074 306904 662552 284652 159302]
[1 5 9 8 6 2 4 3 7 0]
控方证人
肖申克的救赎

6.2 其他常见函数:

#评分人数求和
print(np.sum(mv_num))    #两个函数都行,下面是一样的
mv_num.sum()#时长最长
print(np.max(mv_length))
mv_length.max()#时长最短
print(np.min(mv_length))
mv_length.min()#得分平均值
print(np.mean(mv_score))
mv_score.mean()#得分标准差
print(np.std(mv_score))
mv_score.std()#得分和时长的协方差矩阵
print(np.cov(mv_score,mv_length))#得分和时长的相关系数
print(np.corrcoef(mv_score,mv_length))
3693549
195
92
9.41
0.09433981132056571
[[9.88888889e-03 4.55555556e-01][4.55555556e-01 1.26288889e+03]]
[[1.         0.12890953][0.12890953 1.        ]]

七、多维数组操作

7.1 数组形状,shape和reshape,reshape不会修改原有的数组,而会返回一个新的数组

a=np.arange(6)
print(a)
a.shape=2,3       #转为2维3列
print(a.shape)    #查看a的形状
print(a)          #可以看出原来的数组已经被修改了
[0 1 2 3 4 5]
(2, 3)
[[0 1 2][3 4 5]]
a=np.arange(6)
print(a)
a.reshape(2,3)       #转为2维3列
print(a.shape)    #查看a的形状
print(a)          #可以看出还是原来的数组
[0 1 2 3 4 5]
(6,)
[0 1 2 3 4 5]

注意:shape和reshape的格式不一样

7.2 转置

a=np.arange(6)
a=a.reshape(2,3)
print(a)
print(a.T )
print(a.transpose())
[[0 1 2][3 4 5]]
[[0 3][1 4][2 5]]
[[0 3][1 4][2 5]]

7.3 数组连接

第一种方法:

x=np.array([[0,1,2],[10,11,12]])
y=np.array([[90,91,92],[100,101,102]])
print(x)
print(y)z=np.concatenate((x,y),axis=0)  #按照列
print(z)m=np.concatenate((x,y),axis=1)  #按照行
print(m)n=np.array((x,y))#生成三维数组
print(n)
[[ 0  1  2][10 11 12]]
[[ 90  91  92][100 101 102]]
[[  0   1   2][ 10  11  12][ 90  91  92][100 101 102]]
[[  0   1   2  90  91  92][ 10  11  12 100 101 102]]
[[[  0   1   2][ 10  11  12]][[ 90  91  92][100 101 102]]]

第二种方法:

x=np.array([[0,1,2],[10,11,12]])
y=np.array([[90,91,92],[100,101,102]])
print(x)
print(y)#vstack(按照行)
print( np.vstack((x,y)) )#hstack(按照列)
print( np.hstack((x,y)) )#dstack(生成三维数组)
print( np.dstack((x,y)) )

7.4 numpy内置函数(部分函数)

a=np.array([-1,0,-10,5,7])print( np.abs(a) )    #计算绝对值
print( np.median(a) ) #计算中位数
print( np.exp(a) )    #求指数
print( np.cumsum(a) ) #累计和
[ 1  0 10  5  7]
0.0
[3.67879441e-01 1.00000000e+00 4.53999298e-05 1.48413159e+021.09663316e+03]
[ -1  -1 -11  -6   1]

Python数据分析-numpy相关推荐

  1. Python数据分析——NumPy数值计算基础(二)

    Python数据分析--NumPy数值计算基础(二) 思维导图: 数据的csv文件存取 csv(Comma-Separated Value,逗号分隔值)文件:是一种常见的文件格式,用来存储批量数据. ...

  2. python数据分析 - numpy | ndarray数组 | numpy常用函数

    文章目录 数据分析 numpy概述 numpy历史 numpy的核心:多维数组 numpy基础 ndarray数组 内存中的ndarray对象 ndarray数组对象的特点 ndarray数组对象的创 ...

  3. Python数据分析numpy入门(三)-------numpy100题练习

    Python数据分析基础 二.numpy100题练习 二.numpy100题练习 1.Import the numpy package under the name np (★☆☆). 导入numpy ...

  4. python分析基金数据,[Python数据分析]numpy基金会,基础

    数组属性 ndim与shape的区别 ndim 轴的数量,即从外到内的层数(axis=0为最外层) shape 每层数组的元素,返回一个元组,其长度即为ndim,比如(2,2,3)表示axis=0,有 ...

  5. Python数据分析 | Numpy基本属性介绍

    Numpy基本属性介绍 目录 numpy介绍 常用基本属性 numpy介绍 NumPy(Numerical Python)是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比P ...

  6. Python 数据分析 —— Numpy

    文章目录 小引 -- 为什么要学numpy? numpy 简介 numpy用法: 创建数组 -- numpy.array() 生成整数序列 -- numpy.arange() 生成等差数列 -- nu ...

  7. Python数据分析Numpy库方法简介(三)

    补充: np.ceil()向上取整 3.1向上取整是4 np.floor()向下取整 数组名.resize((m,n)) 重置行列 基础操作 np.random.randn()符合正态分布(钟行/高斯 ...

  8. Python数据分析Numpy库方法简介(一)

    Numpy功能简介: 1.官网:www.numpy.org 2.特点:(1)高效的多维矩阵/数组; (2);复杂的广播功能 (3):有大量的内置数学统计函数 矩阵(多维数组): 一维数组:  ([ 值 ...

  9. Python数据分析-NumPy模块-选取数组元素

    一维数组的元素选取 选取单个元素 from numpy import array a=array([1,2,5,48,62,9,4,7,2,3,6,9]) # 正序索引,其值是从0开始计数 print ...

最新文章

  1. GPT-3到来,程序员会被AI取代吗?
  2. R语言ggplot2可视化水平条形图的标题(title)、副标题(subtitle)和图片说明信息(caption)左对齐实战
  3. 阿里商业白皮书:每个企业都要变成一个数据公司
  4. python爬虫提取a标签_Python爬虫 Pyppeteer获取a标签的文本和链接
  5. 直播报名 | 基金业数字化运营指标体系建设
  6. MSSQL数据库C#操作类(SQLHELPER类的修改版)
  7. 如何处理VirtualBox启动错误消息:The vboxdrv kernel module is not loaded
  8. angular之性能优化
  9. angularjs1.x版本,父子组件之间的双向绑定
  10. 域名行业将带来高达98亿美元的巨大商机
  11. Mongoose源码分析之--简单的服务器搭建(C语言)
  12. 【QT】Qt多线程编程之高级函数
  13. 2022最新小额借贷系统程序源码+附教程文档
  14. linux优化ssd磁盘,Ubuntu下针对ssd硬盘优化
  15. Excel 合并居中后无法自动换行
  16. ht城市介绍人口数量Html,城市人口热力图 城市热力图查询
  17. 荣耀v40pro+参数配置 荣耀v40pro+价格
  18. bzoj4372. 烁烁的游戏【动态点分治】
  19. 计算机电路基础知识点,《计算机电路基础(1)》课教学经验点滴论文.doc
  20. 7种将字符串反转的 Java 方法

热门文章

  1. 魔兽争霸III:冰封王座 1.17版问世
  2. 计蒜客2018 蓝桥杯省赛 B 组模拟赛(一)-H题封印之门
  3. hadoop添加snappy解压缩库
  4. 快速排序Rapidly Sort
  5. 实验室-关于老铁整一个社会语录api与网抑云热评api(并引入百度语音tts)
  6. 视频文件头解析--MP4-综述
  7. Windows Server Core 2022 (一)安装
  8. 刚子扯谈:市场供需关系决定生存
  9. 射影几何----用交比证明著名的梅涅劳斯定理
  10. 4年的数学竞赛学习,终于成就这位牛娃的北大保送之路!