Day23(numpy基本操作 引入numpy模块 矩阵数组的创建 基础运算 矩阵运算   元素的索引  合并 分割 复制)

这篇博客介绍了numpy模块的使用,包括如何创建矩阵数组,进行基础和矩阵运算,详细讨论了元素索引、矩阵的合并、分割及复制等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

目录

引入numpy模块

矩阵数组的创建

基础运算

矩阵运算 

 元素的索引

 合并

分割

复制

 


引入numpy模块

import numpy as np
array = np.array([[1, 2, 3], [2, 3, 4]])
print(array)
print('维数:', array.ndim)
print('shape:', array.shape)
print('size:', array.size)

矩阵数组的创建

# 创建矩阵数组
array = np.array([1, 2, 3], dtype=np.int)  # 整数形式创建数组
a = np.array([[1, 2, 3], [2, 3, 4]])  # 二维矩阵的创建
b = np.zeros((2, 3))  # 创建两行三列的0矩阵
c = np.ones((2, 3))  # 创建两行三列的1矩阵
d = np.empty((3, 4))  # 创建两行三列的空矩阵
d = np.arange(10, 20, 2)  # 创建10到20步长为2的矩阵
d = np.arange(12).reshape((3, 4))  # 创建12个数字三行四列的矩阵
d = np.linespace(1, 10, 5)  # 将1-10分成5段
c = np.random.random((5,2, 3))
# 创,5维2行3列随机数矩阵两个random[[0.82728197 0.54369334 0.73432073] [0.56913164 0.85886651 0.59392416]]
e= np.random.randint(1,10,2,size=(2, 3))
#random.random生成随机数不指定范围,指定形状
#random.randint生成随机数指定范围,1,10从1-10选取,步长为2,形状2*3

基础运算

# 基础运算
a = np.array([10, 20, 30, 40])
b = np.array([1, 2, 3, 4])
print('a+b=', a + b)  # a+b= [11 22 33 44]
print('b**2', b ** 2)  # b**2 [ 1  4  9 16]
print('10*np.sin(a)=', 10 * np.sin(a))  # 三角函数的使用[-5.44021111  9.12945251 -9.88031624  7.4511316 ]
print('判断哪些值小于3', b < 3)  # 布尔运算判断哪些值小于3 [ True  True False False]

矩阵运算 

# 矩阵运算
a = np.array([[1, 0], [0, 1]])
b = np.array([[1, 2], [3, 4]])
print('元素对位相乘a*b=', a * b)  # [[1 0] [0 4]]
print('矩阵相乘两种表达方式=', np.dot(a, b), a.dot(b))  # 矩阵相乘a*b= [[1 2] [3 4]]
np.sum(a, axis=0)  # 求和,axis0为列,1为行,此处为求列和
np.max(a, axis=1)  # 求最大
np.min(a)  # 求最小
d = np.arange(12).reshape((3, 4))  # 创建12个数字三行四列的矩阵[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]
print(np.transpose(d))  # 矩阵转置
print(np.argmin(d))  # 求最小值的索引
print(np.argmax(d))  # 求最大值的索引
print('求平均的两种方式,mean或者average', d.mean(), np.mean(d))
print(np.median(d))  # 求中位数
print(np.cumsum(d))  # 逐个累加的值[ 0  1  3  6 10 15 21 28 36 45 55 66]
print(np.diff(d))  # 相邻两个的差
print(np.nonzero(d))  # 找出非零的数
print(np.sort(d))  # 排序
print(np.clip(d, 5, 9))  
# 小于5的都作为最小值5,大于9的作为最大值9,中间保留[[5 5 5 5][5 5 6 7][8 9 9 9]]

print(np.flatten(d)  #把矩阵转化为一行的矩阵迭代器[ 0  1  2  3 4  5  6  7 8  9 10 11]

 元素的索引

d = np.arange(12).reshape((3, 4))  # 创建12个数字三行四列的矩阵[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]
print(d[2][1], d[2, 1])  # 输出第二行第一列,注意从0开始数,结果为9
print(d[2, :])  # 打印第二行
print(d[:, 1])  # 打印第一列
d = np.arange(12).reshape((3, 4))  # 创建12个数字三行四列的矩阵[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]
print(d[2][1], d[2, 1])  # 输出第二行第一列,注意从0开始数,结果为9
print(d[2, :])  # 打印第二行
print(d[:, 1])  # 打印第一列
for row in d:  # 对行迭代
    print(row)
for column in d.T:  # 对列迭代,先转置
    print(column)
for item in d.flat:  # 对每一个元素按顺序迭代结果 0 1 2 3 4 5 6 7 8 9 10 11 
    print(item, end=' ')

 合并

 

A=np.array([1,1,1])
B=np.array([2,2,2])
print(np.vstack(A,B))  # 上下合并vertical,合成两行三列的矩阵
print(np.hstack(A,B))  # 左右合并horizontal,合成1行6列的矩阵
A.T  #  并不能把序列变为矩阵
print(A[:, np.newaxis])  # 相当于给A这个序列加了一个列的维度,原来的元素作为行
print(A[np.newaxis, :])  # 相当于给A这个序列加了一个行的维度,原来的元素作为列
np.concatenate((A, B, B, A),axis=0)  
# 可以定义在哪个维度进行合并,0为行并(上下),1为列并(左右)

分割

np.split(A, 3, axis=1)  # 将矩阵A分为等分2部分,方向为纵向,必须为等分
np.array_split(A, 2, axis=1)  # 可进行不等分分割
# 简化函数
np.vsplit(A, 3)  # 纵向分成三块
np.hsplit(A, 2)  # 横向分成三块

复制

a=[1,2,3,4]
b=a
c=b
#改变a,  c,b,都会跟着改变
#如果只想把值引用过来,
d=a.copy()#deep copy,此时改变a的值,d不会跟着改变

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值