yjs08——矩阵、数组的运算

一.数组的运算

1.数组的逻辑运算------比较大小、比较大小+赋值

a.首先是直接用数组写大小于号即可对其各个元素进行比较

b.如果输出判断的式子,那么返回的是布尔类型的****数组

c.如果想把数组的所有符合大小的元素全部替换,也可以arr_1[arr_1>0]=1

2.all与any

复制代码
 1.写法: k=np.any/all(条件) 
 2.k的返回结果是布尔类型的单值
 3.any是只要有一个部分符合,那么就返回true;all是需要全部区域都符合时才返回true

3.三元运算符

复制代码
  1.写法: arr_1 = np.where(条件, 符合条件时候的赋值, 不符合条件的赋值)  
  2.注意:需要有接收的变量arr_1,当然也可以用原函数接收;要不然就直接打印,反正不能在代码中孤零零带着,因为他不在原值上做出改变 

4.与、或

复制代码
1.写法:arr_or = np.logical_or/logical_and(条件1, 条件2)   
2.注意:注意写法,是logical_...;
        不在原值上做出改变 ;
        logical_or是符合一个条件即可输出T,logical_and是需要全都符合才输出T;
        arr的记过是布尔数组

5.统计量相关运算

复制代码
具体的值:
np.max(arr02) # 整体最大值
np.max(arr02, axis=0)  # 按列的每列最大值
np.max(arr02, axis=1) # 按行的每行最大值
np.min(...,...) #最小值
np.median(...,...)  #中位数
np.mean(...,....)   #均值
np.std(arr02) # 标准差
np.var(...,...)  #方差

变量所在的位置:
np.argmax(arr02, axis=0)  # 按照列找最大值,最大值所在的位置
np.argmin(arr02)  # 按照一行一行的数,且从0开始,找整体最小的位置

代码:

python 复制代码
import numpy as np

# 数组的运算
arr_1 = np.random.uniform(-1, 2, (2, 3))
# 1.比较大小
print(arr_1)
print(arr_1 > 0)
arr_1[arr_1 > 0] = 99
print(arr_1)
print("================================================")

# 2.any与all
print(np.any(arr_1 < 0))
print(np.all(arr_1 < 0))
print("================================================")

# 3.where 三元运算
arr_1 = np.where(arr_1 > 0, 1, 0)
print(arr_1)
print("================================================")

# 4.logical_and 与logical_or
arr01 = np.random.uniform(-1, 1, (3, 4))
print(arr01)

print(np.logical_or(arr01 > -0.5, arr01 > 0.5))
arr_and = np.logical_and(arr01 > -0.5, arr01 > 0.5)
print(arr_and)
print("================================================")

# 5.统计量
arr02 = np.random.normal(0, 2, (3, 4))
print(arr02)
print(np.max(arr02))  # 整体最大值
print(np.max(arr02, axis=0))  # 按列的每列最大值
print(np.max(arr02, axis=1))  # 按行的每行最大值
print(np.std(arr02))  # 标准差
print(np.argmax(arr02, axis=0))  # 按照列找最大值,最大值所在的位置
print(np.argmin(arr02))  # 按照一行一行的数,且从0开始,找整体最小的位置
print("===========================================================")
#6.数组的四则运算 、广播机制
a0=np.array([[1,2,3],[4,5,6]])
b0=np.array([[3,4,5],[6,7,8]])
a1=[[1,2,3],[4,5,6]]
b1=[[3,4,5],[6,7,8]]
a00=a0/2
a01=a0-1
a02=a0*2
print("np数组的相加:")
print(a0+b0)
print("python数组的相加:")
print(a1+b1)
print('np的数除,减法,数乘的结果')
print(a00)
print("-------")
print(a01)
print("-------")
print(a02)
print("python数组的数乘")
print(a1*2)

我遇到的问题

1.首先是不知道是不是在原值上做出改变

不是!可以直接print(np.操作);也可以 "变量=np.操作" ,但是只有"np.操作"单独一行是不行的

2.逻辑与、或的写法

logical_and/or

3.统计量的写法

a.是 np.max/min/...(操作的数组) ;不是 数组.max/min... 一定要注意写法

b. argmaxargmin的意义要清楚

c.axis=0具体是行还是列可以去试一试

4.np数组的四则运算:

arr+-/*都是对其内部的各个元素进行算术操作

但是!

普通的python数组+数组是拼接!python_arr*3不是对值进行操作,是将其内容复制3份!



二.矩阵的运算

矩阵的乘法

复制代码
1.矩阵×矩阵:    np.matmul(k1,k2)   
           或者 np.dot(k1, k2)  

2.矩阵的数乘:np.dot(k1 , 2)

注意:dot可以数乘也可以矩阵乘法,到那时matmul只能矩阵乘

python 复制代码
# 矩阵的乘法
k1 = np.array([[1, 2, 3], [1, 0, 0]])
k2 = np.array([[0, 0, 1], [0, 0, 1], [1, 0, 0]])
k01 = np.dot(k1 , 2)
print("矩阵的数乘:")
print(k01)

print("矩阵的乘法")
k02 = np.dot(k1, k2)
print(k02)
print("-------")
k03 = np.matmul(k1,k2)
print(k03)
相关推荐
Learn Forever1 分钟前
【智能体】AI Agent 记忆系统:从短期到长期的技术架构与实践指南
人工智能·架构
哈哈哈也不行吗3 分钟前
当AI遇见几何教学:大角几何的技术创新之路
人工智能·在线工具·几何绘图·大角几何·动态数学
hk11245 分钟前
【LegacySys/BioDefense】2026年度古代遗留系统恢复与自动化生物防御基准索引 (Benchmark Index)
人工智能·物联网·网络安全·系统架构·数据集
settingsun122510 分钟前
【AI-算法-01】ResNet (残差网络) & Skip Connections
人工智能·算法
曲幽16 分钟前
从安装到上线:一份 Nginx 实战指南,让你的 Web 应用稳建安全
python·nginx·flask·fastapi·web·gunicorn·uvicorn
qwerasda12385216 分钟前
【医疗AI】基于YOLOv10n-CSP-PTB的超声心动图扇形区域智能检测实战指南
人工智能·yolo
clorisqqq24 分钟前
《人工智能现代方法(第四版)》笔记 启程
人工智能·笔记
vibag26 分钟前
LangSmith监控
人工智能·python·语言模型·langchain·大模型
严文文-Chris30 分钟前
向量内积是什么?解决什么问题?
人工智能
亦复何言??34 分钟前
过拟合/灾难性遗忘:SFT vs on-policy RL
人工智能