numpy数组的基本用法

嵌入式技术

1340人已加入

描述

实验环境:建立在Python3的基础之上

numpy提供了一种数据类型,提供了数据分析的运算基础,安装方式

pip install numpy

导入numpy到python项目

import numpy as np

本文以案例的方式展示numpy的基本语法,没有介绍语法的细枝末节,笔者认为通过查阅案例就能掌握基本用法。

numpy数组的基本概念

numpy默认所有元素具有相同的数据类型,如果类型不一致,会对其进行优化。如果元素类型不同,将统一成一种类型,优先级:str>float>int

数据类型

import numpy as np


t_list = [1, 1.2, "hello"]
print(t_list)


t_list = np.array([1, 1.2, "hello"])
print(t_list)


t_list = np.array([1, 1.2])
print(t_list)

定义数组的时候,可以声明数据类型

t_list = np.array([1,2,3])
print(t_list)


t_list = np.array([1,2,3], dtype=np.float32)
print(t_list)

数据类型

numpy构造数组

1、np.ones(shape, dtype)

shape=(m,n)  m行n列
shape=(m)    m个元素的一维数组
shape=(m,)   m个元素的一维数组
shape=(m,1)  m行1列的二维数组  [[1],[2],[3]]
shape=(1,m)  1列m行的二维数组  [[1,2,3]]
t_list = np.ones(shape=(5,4), dtype=np.int32)
print(t_list)

数据类型

2、np.zeros(shape, dtype)

t_list = np.zeros(shape=(5,3), dtype=np.int32)
print(t_list)

数据类型

3、np.full(shape, fill_value, dtype)

t_list = np.full(shape=(2,3,4), fill_value=10, dtype=np.int32)
print(t_list)

数据类型

4、np.eye(N,M,k,dtype)

# 单位矩阵
t_list = np.eye(N=5, dtype=np.float32)
print(t_list)


# 控制行列的矩阵
t_list = np.eye(N=5, M=4, dtype=np.int32)
print(t_list)


# 1向左偏移
t_list = np.eye(N=5, k=-1)
print(t_list)

数据类型

5、np.linspace(start, stop, num, endpoint=True, retstep=False, dtype)

# 共11个数
t_list = np.linspace(0, 10, 10)
print(t_list)
# 共10个数
t_list = np.linspace(0, 10, 10, endpoint=False)
print(t_list)

数据类型

6、np.arange(start, stop, step, dtype)

t_list = np.arange(1,10,2)
print(t_list)

数据类型

7、np.random.randint(low, high=None, size=None, dtype)

# 随机数
t_list = np.random.randint(1, 100, size=(5,4))
print(t_list)

数据类型

8、np.random.random(size)

# 0到1之间的随机数
t_list = np.random.random(size=(5,4))
print(t_list)

数据类型

9、np.random.permutation()

# 随机索引
t_list = np.random.permutation(10)
print(t_list)

数据类型

10、属性

t_list = np.full(shape=(2,3,4), fill_value=10, dtype=np.int32)
print(t_list)
# 维度
print(t_list.ndim)
# 形状
print(t_list.shape)
# 大小
print(t_list.size)
# 元素类型
print(t_list.dtype)

数据类型

数组的索引和切片

1、索引

t_list = np.array([1,2,3,4,5])
# 以下标的方式访问
print(t_list[0])
# 以列表索引的方式访问
print(t_list[[0,1,2,0,1,3]])
# 以布尔类型访问,得到数组中True的值,但布尔列表的长度需要与数组长度相同
print(t_list[[True,False,True,False,False]])
# 数组可以做运算
print(t_list > 3)
print(t_list[t_list > 3])
t_list = np.array([[1,20,3],[2,30,4],[3,40,5]])
print(t_list[0][1])
# 下标可以放在一起
print(t_list[0,1])
# 高维数组
t_list = np.random.randint(1, 10, size=(3,4,5), dtype=np.int32)
print(t_list)
print(t_list[1])
print(t_list[1,1])
print(t_list[1,1,1])

数据类型

2、切片

t_list = np.random.randint(1,100,size=(10), dtype=np.int32)
print(t_list)
# 切片
print(t_list[2:5])
t_list = np.random.randint(1,100,size=(5,6), dtype=np.int32)
print(t_list)
# 行切片
print(t_list[1:3])
# 列切片
print(t_list[:,1:3])
t_list = np.random.randint(1,100,size=(3,6,5), dtype=np.int32)
print(t_list)
print(t_list[:,:,1:3])

数据类型

3、变形

t_list = np.random.randint(1,100,size=(20), dtype=np.int32)
# 一维数组变形为二维数组,变形需要注意,前后两个数组的元素个数相同
print(t_list.reshape(4,5))

数据类型

4、连接

t_list = np.random.randint(1,100,size=(4,4))
t_list2 = np.random.randint(1,100,size=(4,4))
# 横向连接,要求两个数组的横列大小相同
t_list = np.concatenate((t_list,t_list2), axis=1)
# 纵向连接,要求两个数组的横列大小相同
t_list = np.concatenate((t_list,t_list2), axis=0)

数据类型

t_list = np.random.randint(1,100,size=(4,4))
t_list2 = np.random.randint(1,100,size=(4,4))
np.hstack((t_list,t_list2))
np.vstack((t_list,t_list2))

数据类型

5、切分

t_list = np.random.randint(1,100,size=(4,8))
# 横向切分,等份切分
part1, part2 = np.split(t_list, indices_or_sections=2)
print(part1)
print(part2)
# 纵向切分
part1, part2 = np.split(t_list, indices_or_sections=2, axis=1)
print(part1)
print(part2)
t_list = np.random.randint(1,100,size=(5,7))
part1, part2, part3 = np.split(t_list, indices_or_sections=[2,3])
print(part1)
print(part2)
print(part3)
part1, part2, part3 = np.split(t_list, indices_or_sections=[2,3],axis=1)
print(part1)
print(part2)
print(part3)

数据类型

part1, part2, part3 = np.vsplit(t_list, indices_or_sections=[2,3])
print(part1)
print(part2)
print(part3)
part1, part2, part3 = np.hsplit(t_list, indices_or_sections=[2,3])
print(part1)
print(part2)
print(part3)

数据类型

6、复制

ct_list = t_list.copy()
ct_list[1,2] = 1000
print(t_list)
print(ct_list)

数据类型

聚合操作

1、求和

t_list = np.random.randint(1,100,size=(4,8))
# 求和
print(t_list.sum())
# 求均值
print(t_list.mean())
# 求最值
print(t_list.max())
print(t_list.min())
# 最值索引
print(t_list.argmax())
print(t_list.argmin())
# 标准方差
print(t_list.std())
# 方差
print(t_list.var())
# 中位数
print(np.median(t_list))

数据类型

2、布尔运算

t_list = np.array([True, False, True, True])
# 只要存在一个True,返回True
print(t_list.any())
# 全部为Ture,返回True
print(t_list.all())

数据类型

3、矩阵

t_list = np.array([[1,2,3],[2,3,4]])
t_list2 = np.array([[1,2],[2,3],[3,4]])
print(np.dot(t_list, t_list2))

数据类型

以上是numpy的基本操作,numpy提供了操作数组的运算基础,复杂业务处理,还需要Pandas的加入。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分