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

使用 numpy.where() 在给定范围内的两个数组中搜索元素

如何将 NumPy 数组标准化到一定范围内?

创建numpy数组,其中值在其他两个相同大小排列的范围内

如何在一定范围内创建随机数组

置信区间、显著性检验和统计学意义