第二十一天-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\]

相关推荐
chao_78929 分钟前
二分查找篇——寻找旋转排序数组中的最小值【LeetCode】
python·线性代数·算法·leetcode·矩阵
金玉满堂@bj1 小时前
PyCharm 中 Python 解释器的添加选项及作用
ide·python·pycharm
程序员三藏1 小时前
如何使用Pytest进行测试?
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
随心点儿1 小时前
使用python 将多个docx文件合并为一个word
开发语言·python·多个word合并为一个
不学无术の码农1 小时前
《Effective Python》第十三章 测试与调试——使用 Mock 测试具有复杂依赖的代码
开发语言·python
sleepybear11132 小时前
在Ubuntu上从零开始编译并运行Home Assistant源码并集成HACS与小米开源的Ha Xiaomi Home
python·智能家居·小米·home assistant·米家·ha xiaomi home
纪伊路上盛名在2 小时前
(鱼书)深度学习入门1:python入门
人工智能·python·深度学习
夏末蝉未鸣012 小时前
python transformers笔记(TrainingArguments类)
python·自然语言处理·transformer
德育处主任Pro2 小时前
「py数据分析」04如何将 Python 爬取的数据保存为 CSV 文件
数据库·python·数据分析
咸鱼鲸2 小时前
【PyTorch】PyTorch中数据准备工作(AI生成)
人工智能·pytorch·python