numpy的相关使用

                                                                                   

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

其部分功能如下:

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

一.创建数组

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

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

# 导入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的数组

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的数组

ndarray4 = np.ones((2,3))
ndarray5 = np.ones((2))
ndarray6 = np.ones_like([[1,2,3],[2.,4,5]])

4. empty和empty_like创建数组

创建未初始化的数组

ndarray4 = np.empty((2,3))
ndarray5 = np.empty(2)
ndarray6 = np.empty_like([[1,2,3],[2,4,5]])

5.arange创建数组

# 产生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.更改元素类型进行数组类型的转换

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

数组运算

# 数组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])

 

数组索引和切片

基本索引和切片

花式索引

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])]

 数组函数

通用元素级数组函数

# 定义一个数组  -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)
#定义两个数组
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)

 

相关链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值