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

相关推荐
nbsaas-boot2 小时前
Java 正则表达式白皮书:语法详解、工程实践与常用表达式库
开发语言·python·mysql
仗剑_走天涯2 小时前
基于pytorch.nn模块实现线性模型
人工智能·pytorch·python·深度学习
chao_7892 小时前
二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
开发语言·数据结构·python·算法·leetcode
chao_7896 小时前
二分查找篇——搜索旋转排序数组【LeetCode】一次二分查找
数据结构·python·算法·leetcode·二分查找
烛阴6 小时前
Python装饰器解除:如何让被装饰的函数重获自由?
前端·python
noravinsc7 小时前
django 一个表中包括id和parentid,如何通过parentid找到全部父爷id
python·django·sqlite
ajassi20007 小时前
开源 python 应用 开发(三)python语法介绍
linux·python·开源·自动化
沉默媛7 小时前
如何安装python以及jupyter notebook
开发语言·python·jupyter
Deng9452013149 小时前
基于Python的旅游数据可视化应用
python·numpy·pandas·旅游·数据可视化技术
2401_878624799 小时前
pytorch 自动微分
人工智能·pytorch·python·机器学习