一.数组的运算
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. argmax 与argmin的意义要清楚
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)