Numpy的简单使用
Posted 哈喽喔德
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Numpy的简单使用相关的知识,希望对你有一定的参考价值。
import numpy as np
数组创建
# 将list或tuple转换为numpy矩阵
# 可以添加dtype属性指定元素的类型
matrix = np.array([[1,2,3],
[4,5,6],
[7,8,9]],dtype=float)
print(matrix) # 输出矩阵
print(matrix.shape) # 输出矩阵的规模(行,列)
matrix = np.zeros((3,4),dtype=np.int16) # 定义一个元素为0的指定规模的矩阵,可添加dtype属性
print(matrix)
matrix = np.ones((3,4),dtype=np.float64) # 定义一个元素为1的指定规模的矩阵,可添加dtype属性
print(matrix)
vector = np.arange(12) # 生成指定范围[0~12)内的数列
print(vector)
vector = np.arange(4,8) # 生成指定范围[4~8)内的数列
print(vector)
vector = np.arange(10, 20, 2) #生成指定范围内[10,20)的,步长为2的数列
print(vector)
matrix = np.arange(12).reshape((3,4)) # 将数列转化为指定规模的矩阵(生成元素数量必须和规模严格对应)
print(matrix)
lines = np.linspace(1, 10, 6) # 生成指定范围内[1,10],等划分的指定总数的线段组
print(lines)
matrix = np.linspace(1, 10, 6).reshape((2,3))
print(matrix) # 将线段组转化为指定规模的矩阵(生成元素数量必须和规模严格对应)
matrix = np.random.random((3,4)) # 随机生成矩阵
数组运算
matrix = np.arange(2,14).reshape((3,4))
a = np.array([[10,20,30,40],
[50,60,70,80]])
b = np.arange(4)
# 基本运算
print(a+b) # 矩阵的加法,必须保证行数相同
print(b**2) # 幂运算
print(np.sin(b)) # 三角函数运算
print(b<=1) # 真值运算
print(a * b) # 对应位置相乘
# 矩阵运算
print(np.dot(a, b)) # 矩阵的乘法
print(a.dot(b)) # 矩阵乘法的另一种形式
print(a@b) # 矩阵乘法的另一种形式
print(np.transpose(matrix)) # 矩阵的转置
print(matrix.T) # 矩阵的转置的另一种形式
print(matrix.sum()) # 矩阵元素求和
print(matrix.max()) # 求最大的元素
print(matrix.min()) # 求最小的元素
print(np.sum(matrix, axis=1)) # 每一列或行求和(axis=1表示行)
print(np.max(matrix, axis=0)) # 每一行或列求最大的元素(axis=0表示列)
print(np.argmax(matrix)) # 输出矩阵最大的索引
print(np.argmin(matrix)) # 输出矩阵最小的索引
print(np.average(matrix)) # 输出矩阵的平均值
print(np.median(matrix)) # 输出矩阵的中位数
print(np.cumsum(matrix)) # 依次累加前n项的值
print(np.diff(matrix)) # 依次得到相邻元素的差
print(np.sort(matrix)) # 在每一行进行排序
print(np.clip(matrix, min, max)) # 小于min的元素设置为min,大于max的数设置为max,中间的值不变动
数据操作
# 使用索引
matrix = np.arange(3,15).reshape((3,4))
print(matrix[1][2]) # numpy矩阵可以使用索引调用元素
print(matrix[1,2]) # numpy矩阵使用索引调用元素的另一种形式
# 简单切片
print(matrix[1,:]) # 输出指定行
print(matrix[:,2]) # 输出指定列
print(matrix[0:1,1:2]) # 输出指定范围的元素
# 迭代每一行
for row in matrix:
print(row)
# 迭代每一列
for column in matrix.T:
print(column)
# 迭代每一个元素
for item in matrix.flat:
print(item)
# 矩阵合并
matrix_a = np.array([[1,1,1]])
matrix_b = np.array([[2,2,2]])
print(np.vstack((matrix_a, matrix_b))) # 垂直方向拼接两个矩阵
print(np.hstack((matrix_a, matrix_b))) # 水平方向拼接两个矩阵
print(np.concatenate((matrix_a,matrix_b,matrix_a,matrix_b),axis=1)) # 水平方向拼接多个矩阵
print(np.concatenate((matrix_a,matrix_b,matrix_a,matrix_b),axis=0)) # 垂直方向拼接多个矩阵
matrix_a = np.array([1,1,1])
matrix_b = np.array([2,2,2])
print(matrix_a[np.newaxis,:]) # 在行上添加维度
print(matrix_a[:,np.newaxis]) # 在列上添加维度
# 矩阵分割
matrix = np.arange(12).reshape((3,4))
print(matrix)
print(np.split(matrix, 2, axis=1)) # 对列进行相等的两部分分割,
print(np.array_split(matrix, 2, axis=0)) # 对行进行不等的两部分分割
print(np.vsplit(matrix,3)) # 对矩阵进行相等的纵向分割
print(np.hsplit(matrix,2)) # 对矩阵进行相等的横向分割
数组复制
matrix_a = np.arange(12).reshape((3,4))
matrix_b = matrix_a.copy() # 对值进行拷贝
print(matrix_b)
以上是关于Numpy的简单使用的主要内容,如果未能解决你的问题,请参考以下文章
NumPy 错误:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()