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)
相关推荐
陈天伟教授5 分钟前
数据库技术发展趋势- 04.大数据技术
数据库·人工智能·数据挖掘
周博洋K6 分钟前
从MAE到C-Eval(2)
人工智能
奕成则成9 分钟前
Python 创建虚拟环境
开发语言·python
lpfasd12316 分钟前
Spring Boot 4.0.1 集成 Spring Boot AI 全攻略
人工智能·spring boot·后端
观远数据16 分钟前
人效分析怎么做?4步构建数据驱动的人效提升体系
大数据·人工智能·数据分析
抖知书31 分钟前
针对小说写作卡文痛点,用小说写作教程学方法、技巧找思路、提示词拓脑洞、助力剧情续写
人工智能
lambo mercy1 小时前
python入门
前端·数据库·python
用你的胜利博我一笑吧1 小时前
opencv(自用)
人工智能·opencv·计算机视觉
0和1的舞者1 小时前
Python函数与列表元组全解析
python·学习·学习方法·知识
pps-key1 小时前
ai交易算力研究
大数据·jvm·人工智能·机器学习