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)
相关推荐
小白学大数据1 小时前
增量爬取策略:如何持续监控贝壳网最新成交数据
爬虫·python·性能优化
极客学术工坊1 小时前
2023年第二十届五一数学建模竞赛-A题 无人机定点投放问题-基于抛体运动的无人机定点投放问题研究
人工智能·机器学习·数学建模·启发式算法
Theodore_10222 小时前
深度学习(9)导数与计算图
人工智能·深度学习·机器学习·矩阵·线性回归
PPIO派欧云3 小时前
PPIO上新GPU实例模板,一键部署PaddleOCR-VL
人工智能
TGITCIC4 小时前
金融RAG落地之痛:不在模型,而在数据结构
人工智能·ai大模型·ai agent·ai智能体·开源大模型·金融ai·金融rag
夏鹏今天学习了吗4 小时前
【LeetCode热题100(62/100)】搜索二维矩阵
算法·leetcode·矩阵
@forever@6 小时前
【JAVA】LinkedList与链表
java·python·链表
程序员爱钓鱼6 小时前
Python编程实战:面向对象与进阶语法——类型注解与代码规范(PEP 8)
后端·python·ipython
程序员爱钓鱼6 小时前
Python实战:用高德地图API批量获取地址所属街道并写回Excel
后端·python·ipython
reasonsummer8 小时前
【教学类-97-06】20251105“葡萄”橡皮泥黏贴(小班主题《苹果与橘子》)
python