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)
相关推荐
埃菲尔铁塔_CV算法14 分钟前
深度学习神经网络创新点方向
人工智能·深度学习·神经网络
艾思科蓝-何老师【H8053】32 分钟前
【ACM出版】第四届信号处理与通信技术国际学术会议(SPCT 2024)
人工智能·信号处理·论文发表·香港中文大学
秀儿还能再秀1 小时前
机器学习——简单线性回归、逻辑回归
笔记·python·学习·机器学习
weixin_452600691 小时前
《青牛科技 GC6125:驱动芯片中的璀璨之星,点亮 IPcamera 和云台控制(替代 BU24025/ROHM)》
人工智能·科技·单片机·嵌入式硬件·新能源充电桩·智能充电枪
学术搬运工1 小时前
【珠海科技学院主办,暨南大学协办 | IEEE出版 | EI检索稳定 】2024年健康大数据与智能医疗国际会议(ICHIH 2024)
大数据·图像处理·人工智能·科技·机器学习·自然语言处理
右恩1 小时前
AI大模型重塑软件开发:流程革新与未来展望
人工智能
图片转成excel表格2 小时前
WPS Office Excel 转 PDF 后图片丢失的解决方法
人工智能·科技·深度学习
阿_旭2 小时前
如何使用OpenCV和Python进行相机校准
python·opencv·相机校准·畸变校准
幸运的星竹2 小时前
使用pytest+openpyxl做接口自动化遇到的问题
python·自动化·pytest
ApiHug2 小时前
ApiSmart x Qwen2.5-Coder 开源旗舰编程模型媲美 GPT-4o, ApiSmart 实测!
人工智能·spring boot·spring·ai编程·apihug