首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >numpy的相关使用

numpy的相关使用

作者头像
用户8346838
发布2021-03-10 20:28:39
发布2021-03-10 20:28:39
9190
举报
文章被收录于专栏:KevinKevin

Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包。它是我们课程所介绍的其他高级工具的构建基础。

其部分功能如下:

  1. ndarray, 一个具有复杂广播能力的快速且节省空间的多维数组。
  2. 对于整组数据进行快速的运算,无需编写循环。
  3. 用于读写磁盘数据的工具以及用于操作内容映射文件的工具。
  4. 用于集成由C, C++等语言编写的代码的工具。

一.创建数组

numpy是一个N维数组,类型是numpy.ndarray,ndarray中所有的元素类型必须一样,每个素组中都有一个shape(各维度大小的元组)和一个dtype(数组数据类型的对象)

1.array函数创建0维数组,1维数组,2维数组,3维数组

代码语言:javascript
复制
# 导入numpy包
import numpy as np
# 创建O维数组
ndarray0 = np.array(1)
# 创建1维数组
ndarray1 = np.array([1,2,3,4,5])
# 创建2维数组
ndarray2 = np.array([[1,2,3,4,5],[6,7,8,9,10]])
# 创建3维数组
ndarray3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
# 输出结果
print("以下数组类型")
print("ndarray0:{}".format(type(ndarray0)))
print("ndarray1:{}".format(type(ndarray1)))
print("ndarray2:{}".format(type(ndarray2)))
print("ndarray3:{}".format(type(ndarray3)))
print("*********************************")
print("以下数组元素类型")
print("ndarray0:{}".format(ndarray0.dtype))
print("ndarray1:{}".format(ndarray1.dtype))
print("ndarray2:{}".format(ndarray2.dtype))
print("ndarray3:{}".format(ndarray3.dtype))
print("*********************************")
print("以下数组shape")
print("ndarray0:{}".format(ndarray0.shape))
print("ndarray1:{}".format(ndarray1.shape))
print("ndarray2:{}".format(ndarray2.shape))
print("ndarray3:{}".format(ndarray3.shape))

输出结果

2.zeros和zeros_like创建数组

zeros创建元素均为0的数组,zeros_like根据出入的数组的shape来创建所有元素均为0的数组

代码语言:javascript
复制
ndarray4 = np.zeros((2,3))
ndarray5 = np.zeros((2))
ndarray6 = np.zeros_like([[1,2,3],[2.,4,5]])

3.ones和ones_like创建数组

ones创建所有元素为0的数组,ones_like根据传入的数组的shape来创建所有元素均为1的数组

代码语言:javascript
复制
ndarray4 = np.ones((2,3))
ndarray5 = np.ones((2))
ndarray6 = np.ones_like([[1,2,3],[2.,4,5]])

4. empty和empty_like创建数组

创建未初始化的数组

代码语言:javascript
复制
ndarray4 = np.empty((2,3))
ndarray5 = np.empty(2)
ndarray6 = np.empty_like([[1,2,3],[2,4,5]])

5.arange创建数组

代码语言:javascript
复制
# 产生0-9共10个元素
ndarray13 = np.arange(10)
# 产生从10-19共10个元素
ndarray14 = np.arange(10, 20)
# 产生10 12 14 16 18, 2为step
ndarray15 = np.arange(10, 20, 2)
# ndarray15的形状
print('ndarray14的形状:', ndarray14.shape)
# 将其形状改变为(2, 5)
ndarray15 = ndarray14.reshape((2, 5))

6.eys创建对角矩阵数组

创建一个N*N的矩阵,对角线为1,其余为0.

二 数据类型

1.指的是数组元素的类型

int默认int32 float默认float62

2.更改元素类型进行数组类型的转换

代码语言:javascript
复制
# 开始数租
ndarray0 = np.array([1,2,3,4])
print("初始元素类型:{}".format(ndarray0.dtype))
# 更改数组元素类型
ndarray1 = ndarray0.astype(np.int64)
print("更改后数组元素类型:{}".format(ndarray1.dtype))

数组运算

代码语言:javascript
复制
# 数组a
a = np.array([[5,6],[7,8],[9,10]])
# 数组b
b = np.array([[1,2],[3,4],[5,6]])
# 数组与数组之间的运算
c1 = a + b
c2 = a - b
c3 = a * b
c4 = a / b
# 数组与数字之间的运算
d1 = a + 2
d2 = a - 2
d3 = a * 2
d4 = a / 2
# 一维数组与多维数组之间的运算
e1 = a + np.array([2])
e2 = a - np.array([2])
e3 = a * np.array([2])
e4 = a / np.array([2])

数组索引和切片

基本索引和切片

花式索引

代码语言:javascript
复制
import numpy as np
ndarray1 = np.empty((8, 4))
for i in range(8):
    ndarray1[i] = np.arange(i, i + 4)

# 选取特定的子集,参数为列表  # 选定索引为0 1 6 7 这四行
ret1 = ndarray1[[0, 1, 6, 7]]

# 使用负数索引会从末尾开始选取行  # 选定索引为-1, 0, -2 这三行
ret2 = ndarray1[[-1, 0, -2]]

# 一次传入多个数组 选取前面列表的行  然后继续按照后面列表的索引进行分别选取
ret3 = ndarray1[[1, 3, 5], [1, 2, 3]]
# 先选取前面的数组 然后继续后面的选取
ret4 = ndarray1[[1, 3, 5]][[1, 2]]

# 获取选区数据
ret5 = ndarray1[[1, 3, 5]][:, [1, 2, 3]]
ret6 = ndarray1[np.ix_([1, 2, 4], [1, 2, 3])]

数组函数

通用元素级数组函数

代码语言:javascript
复制
# 定义一个数组  -100到100任意int32类型,数组维度大小(2,3,4)
ndarray0 = np.random.uniform(-100,100,size=(2,3,4))
# 一元函数
# 计算数组的绝对值 abs 各个元素的绝对值
np.abs(ndarray0)
# 计算各个元素的平方  square
np.square(ndarray0)
# 计算各个元素的平方个  sqrt
# np.sqrt(ndarray0)
# 计算各元素的正负号  1:正数 -1 :负数 0:0
np.sign(ndarray0)
# 计算各个元素的celling值,即大于该值的最小正数
np.ceil(ndarray0)
# 计算各元素的floor值,即小于等于该值的最大正数
np.floor(ndarray0)
# 对各个元素进行四舍五入,但是保留dtype
np.rint(ndarray0)
# 将各个元素进行正数和小数进行拆分,返回两个数组(一个正数数组,一个小数数组)
np.modf(ndarray0)
# 对各个元素是否是空值进行判断 False:不是空值 True:是空值
np.isnan(ndarray0)
代码语言:javascript
复制
#定义两个数组
ndarray1 = np.array([[3,2,3,4,5],[2,3,4,5,6]])
ndarray2 = np.array([[3,4,5,6,7],[4,5,6,7,8]])
# 二元函数
# 将两个数组的对应元素进行相加  add
np.add(ndarray1,ndarray2)
# 两数组中对应位置元素进行相减  subtract
np.subtract(ndarray1,ndarray2)
# 数组元素想乘,对应位置元素进行相乘   multiply
np.multiply(ndarray1,ndarray2)
# 对应元素进行相除  divide
np.divide(ndarray1,ndarray2)
# 对应元素进行相除  但是舍弃余数
np.floor_divide(ndarray2,ndarray1)
# 进行指数运算对应元素,前者有底数 后者后指数
np.power(ndarray1,ndarray2)
# 从两数组对应元素中取出相比较大的元素组成新的数组
np.maximum(ndarray1,ndarray2)
# 从两数组对应元素中取出相比较大的元素组成新的数组  相比maximum忽略nan值
np.fmax(ndarray1,ndarray2)
# 从两数组对应元素中取出相比较小的元素组成新的数组
np.minimum(ndarray1,ndarray2)
# 从两数组对应元素中取出相比较小的元素组成新的数组  相比maximum忽略nan值
np.fmin(ndarray1,ndarray2)
# 求模计算  计算对应元素相除得到的余数,组成新的数组
np.mod(ndarray2,ndarray1)
# 将第二个素组中的符号复制给第一个数组对应元素上,如果第二个是负数,则将负号复制到第一个数组对应元素上,值取第一个数组的元素
np.copysign(ndarray1,ndarray2)
# 运算比较 两者进行比较 greater  大于就True 否者False
np.greater(ndarray1,ndarray2)  
# 运算比较 两者进行比较 greater 大于等于就True 否者False
np.greater_equal(ndarray1,ndarray2)

相关链接

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包。它是我们课程所介绍的其他高级工具的构建基础。
    • 一.创建数组
    • 二 数据类型
    • 数组运算
    • 数组索引和切片
    • 数组函数
  • 相关链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档