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)
相关推荐
无代码Dev15 分钟前
如何使用AI去水印(ChatGPT去除图片水印)
人工智能·ai·ai-native
达柳斯·绍达华·宁34 分钟前
自动驾驶04:点云预处理03
人工智能·机器学习·自动驾驶
wgc2k37 分钟前
吴恩达深度学习复盘(4)神经网络的前向传播
人工智能·深度学习
屎派克38 分钟前
神经网络知识
人工智能·深度学习·神经网络
liuhaoran___1 小时前
计算机求职面试中高频出现的经典题目分类整理
python
补三补四1 小时前
k近邻算法K-Nearest Neighbors(KNN)
人工智能·机器学习
AI绘画月月1 小时前
AI绘画 | Stable Diffusion 图片背景完美替换
图像处理·人工智能·计算机视觉·ai作画·stable diffusion·midjourney·sd
阿里云大数据AI技术1 小时前
阿里云 AI 搜索开放平台新发布:增加 QwQ 模型
人工智能·云计算
Toky丶1 小时前
【文献阅读】Vision-Language Models for Vision Tasks: A Survey
人工智能·语言模型·自然语言处理
小白狮ww1 小时前
Retinex 算法 + MATLAB 软件,高效率完成图像去雾处理
开发语言·人工智能·算法·matlab·自然语言处理·图像识别·去雾处理