第二十一天-NumPy

目录

什么是NumPy

NumPy使用

1.数组的创建

2.类型转换

3.赠删改查

4.数组运算

5.矩阵运算


什么是NumPy

1.NumPy操作的是多维数组,什么是纬度?

NumPy使用

  1. 安装

pip install numpy

import numpy as np

2.官网:

中文官网:numpy.org.cn

1.数组的创建

1.创建一个一维数组:array

复制代码
import numpy as np

#创建一个一维数组
d1=np.array([1,2,3,4,5])
print(d1)
#查看size
print(d1.size)
#查看type
print(type(d1))
#查看数据维度
print(d1.ndim)

out:

1 2 3 4 5

5

<class 'numpy.ndarray'>

1

2.创建一个二维数组:arnge

复制代码
#创建一个二维数组
d2=np.arange(15)
print(d2)
#增加行,列维度
d2=d2.reshape(3,5)
print(d2)

out:

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 12 13 14\]

3.创建全为0或1的数组

复制代码
# 创建全为0的数组
d3 = np.zeros(15)
d3 = d3.reshape(3, 5)
print(d3)

d4 = np.ones(15)
d4 = d4.reshape(3, 5)
print(d4)

out

\[0. 0. 0. 0. 0.

0. 0. 0. 0. 0.

0. 0. 0. 0. 0.\]

\[1. 1. 1. 1. 1.

1. 1. 1. 1. 1.

1. 1. 1. 1. 1.\]

4.empty,创建新数组,只分配内存空间,不填充任何值

复制代码
d5 = np.empty(([1,2,3]))
print(d5)

2.类型转换

numpy会自动根据传入类型设置数据类型

  1. 数组转np数组

    数组转为np数组

    data = [[1, 2, 3, 4], [5, 6, 7, 8]]
    print(type(data))
    d1 = np.array(data)
    print(d1)
    print(type(d1))

out:

<class 'list'>

\[1 2 3 4

5 6 7 8\]

<class 'numpy.ndarray'>

2.dtype识别数据类型

复制代码
d4 = np.ones(15)
d4 = d4.reshape(3, 5)
print(d4.dtype)

out:float64

3.创建时指定数据类型

复制代码
d4 = np.arange(15,dtype=np.float64)
d4 = d4.reshape(3, 5)
print(d4)

print(d4.dtype)

4.对ndarray进行数据类型转换,astype

复制代码
data4.astype(np.float64)

3.赠删改查

1.索引

复制代码
#一维数组索引获取数据
d1=np.arange(15)
print(d1)
print("获取第一个:",d1[0])
print("获取最后一个:",d1[-1])

#二维数组
d2=np.arange(15).reshape(3,5)
print(d2)
print("获取第一行第一列,方法1:",d2[0,0])
print("获取第一行第一列,方法2:",d2[0][0])
print("获取倒数第一行第一列,方法1:",d2[-1,-1])
print("获取倒数第一行第一列,方法2:",d2[-1][-1])

#三维数组
d2=np.arange(30).reshape(3,5,2)
print(d2)
print("获取第一行第一列第一个,方法1:",d2[0,0,0])
print("获取第一行第一列第一个,方法2:",d2[0][0][0])
print("获取倒数第一行第一列第一个,方法1:",d2[-1,-1,-1])
print("获取倒数第一行第一列第一个,方法2:",d2[-1][-1][-1])

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

获取第一个: 0

获取最后一个: 14

\[ 0 1 2 3 4

5 6 7 8 9

10 11 12 13 14\]

获取第一行第一列,方法1: 0

获取第一行第一列,方法2: 0

获取倒数第一行第一列,方法1: 14

获取倒数第一行第一列,方法2: 14

\[\[ 0 1

2 3

4 5

6 7

8 9\]

\[10 11

12 13

14 15

16 17

18 19\]

\[20 21

22 23

24 25

26 27

28 29\]\]

获取第一行第一列第一个,方法1: 0

获取第一行第一列第一个,方法2: 0

获取倒数第一行第一列第一个,方法1: 29

获取倒数第一行第一列第一个,方法2: 29

2.索引

复制代码
#一维数组切片
d1=np.arange(15)
print("===",d1[0:3]) #截取包含起始下标到不包含结尾的数据
print("===",d1[:-1]) #截取全部


#二维数组切片
d2=np.arange(15).reshape(3,5)
print("===",d2[0:1,:]) #行参数,列参数
print("===",d2[:,3:4]) #获取全部行,中3列的数据

#三维数组
d3=np.arange(30).reshape(3,5,2)
print("===",d3)
print("===",d3[0:1,2:,:]) #行参数,列参数,三维参数

#根据索引获取数据
#一维数组
print("===",d1[np.array([0,2,4])])

print("===",d2[np.array([0,2]),np.array([1,2])])

=== [0 1 2]

=== [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]

=== [[0 1 2 3 4]]

=== [[ 3]

8

13\]

=== [[[ 0 1]

2 3

4 5

6 7

8 9\]

\[10 11

12 13

14 15

16 17

18 19\]

\[20 21

22 23

24 25

26 27

28 29\]\]

=== [[[4 5]

6 7

8 9\]\]

=== [0 2 4]

=== [ 1 12]

4.数组运算

  1. 算数运算
复制代码
import numpy as np

#算数运算
a= np.random.random(10000)*10
b= np.random.random(10000)*10
#加法
print("加法:",np.add(a,b))
print("减法:",np.subtract(a,b))
print("除法:",np.divide(a,b))
print("乘法:",np.multiply(a,b))

加法: [13.06866571 6.26206256 7.44861655 ... 12.38302847 13.97542329

11.69602862]

减法: [-1.04377832 4.84747125 2.0907946 ... -5.08931599 -0.78999914

7.99437207]

除法: [0.85207689 7.85352893 1.78046438 ... 0.41744326 0.89299336 5.31934836]

乘法: [42.42513755 3.92886251 12.77761661 ... 31.85956422 48.67208937

18.22177516]

2.数学函数

如:sin, 更多函数请看官方文档

复制代码
#数学三角函数
ang=np.array([0,30,45,60,90,120,135,150,180])
rad=np.sin(ang*np.pi/180)
print(rad)

0.00000000e+00 5.00000000e-01 7.07106781e-01 8.66025404e-01 1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01 1.22464680e-16

3.统计函数

复制代码
# 统计函数
d2 = np.array([1, 2, 3, 4, 5])
print("平均值mean:", np.mean(d2))
print("平均值average:", np.average(d2))
print("平均值,加权:", np.average(d2, weights=np.array([2, 2, 1, 1, 1])))
print("中位数median:", np.median(d2))
# 中位数,如未偶数,则取中间2个值进行除以2
print("中位数median,偶数:", np.median([1, 2, 3, 4, 5, 6]))
#方差 求每个数的离散值
print("方差,,var:", np.var(d2))
print("标准差,std:", np.std(d2))

平均值mean: 3.0

平均值average: 3.0

平均值,加权: 2.5714285714285716

中位数median: 3.0

中位数median,偶数: 3.5

方差,求每个数的离散值,var: 2.0

标准差,std: 1.4142135623730951

4.聚合运算

sum与np.sum性能对比,np.sum函数比内置统计函数快了10倍

复制代码
#聚合运算
a = np.array([1, 2, 3, 4, 5])
print("内置统计函数sum:",sum(a))
print("numpay统计函数:sum:",np.sum(a))
print("累计乘prod:",np.prod(a))
print("最大值max:",np.max(a))
print("最小值min:",np.min(a))

内置统计函数sum: 15

numpay统计函数:sum: 15

累计乘prod: 120

最大值max: 5

最小值min: 1

5.筛选排序:

复制代码
# 筛选、排序
a = np.array([1, 2, 3, 4, 5, 6])
# 筛选函数,注意返回的是下标
print("筛选:", np.where(a > 3))
print("排序,升序:", np.sort(a))

筛选: (array([3, 4, 5], dtype=int64),)

排序: [1 2 3 4 5 6]

5.矩阵运算

1.什么是矩阵,

  • 按照长方阵列(m行*n列)排列的数值集合
  • dot使用
复制代码
a = np.arange(15).reshape(3, 5)
b = np.arange(15, 30).reshape(3, 5)
print("a:",a)
print("b:",b)
# 转置
a = a.T
print("a转置后",a)
print(np.dot(a, b))

a: [[ 0 1 2 3 4]

5 6 7 8 9

10 11 12 13 14\]

b: [[15 16 17 18 19]

20 21 22 23 24

25 26 27 28 29\]

a转置后 [[ 0 5 10]

1 6 11

2 7 12

3 8 13

4 9 14\]

\[350 365 380 395 410

410 428 446 464 482

470 491 512 533 554

530 554 578 602 626

590 617 644 671 698\]

相关推荐
Loo国昌1 分钟前
【LangChain1.0】第九阶段:文档处理工程 (LlamaIndex)
人工智能·后端·python·算法·langchain
抠头专注python环境配置35 分钟前
基于Python与深度学习的智能垃圾分类系统设计与实现
pytorch·python·深度学习·分类·垃圾分类·vgg·densenet
愈努力俞幸运1 小时前
flask 入门 token, headers,cookie
后端·python·flask
梦想是成为算法高手1 小时前
带你从入门到精通——知识图谱(一. 知识图谱入门)
人工智能·pytorch·python·深度学习·神经网络·知识图谱
用什么都重名1 小时前
Conda 虚拟环境安装配置路径详解
windows·python·conda
阿也在北京1 小时前
基于Neo4j和TuGraph的知识图谱与问答系统搭建——胡歌的导演演员人际圈
python·阿里云·知识图谱·neo4j
计算机徐师兄1 小时前
Python基于知识图谱的胆囊炎医疗问答系统(附源码,文档说明)
python·知识图谱·胆囊炎医疗问答系统·python胆囊炎医疗问答系统·知识图谱的胆囊炎医疗问答系统·python知识图谱·医疗问答系统
北冥码鲲1 小时前
【保姆级教程】从零入手:Python + Neo4j 构建你的第一个知识图谱
python·知识图谱·neo4j
B站计算机毕业设计超人1 小时前
计算机毕业设计Python+大模型音乐推荐系统 音乐数据分析 音乐可视化 音乐爬虫 知识图谱 大数据毕业设计
人工智能·hadoop·爬虫·python·数据分析·知识图谱·课程设计