2021-06-27

6.26学习笔记

#一、数组的值替换
1、一维度及多维数组值替换核心是将选定数据替换为特定值,也可使用条件替换,以及使用where条件替换。(联系6.25日学习笔记)
import numpy as np
import pandas as pd
a1 = np.random.randint(2,100,size = (3,5))
a2=np.where(a1<50)
a3=np.where(a1<50,1,0)
# a1[:,1:3] = 1
print(a1)
print(a2)
print(a3)
#二、数组运算(广播机制)
#1、数组与数的运算
a1 = np.random.randint(1,13,size = (6,9))
print(a1)
print(a1*2)#数组与数直接相乘
print('='*30)
#2、数组与数组的运算
#shape相同的数组相加
a2 = np.random.randint(2,7,size = (6,9))
print(a2)
print(a1+a2)#相同shape的数据对应位置直接相加
print('='*30)
#shape不同的数组相加会报错,不可直接相加
#在行数相同的情况下,单列数据可以与多列数据相加(列数相同同理)
a3 = np.random.randint(2,7,size = (6,1))
a4 = np.random.randint(2,7,size = (1,9))
print(a3)
print(a1+a3)#相加结果为,将多列数据的每一列与单列数据相加(线性代数相关)
print('='*30)
print(a4)
print(a1+a4)
print('='*30)
#广播原则:如果两个数组的后缘维度(即从末尾开始算的维度)的轴长度相符或其中一方的长度为1,则认为他们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。(兼容的后缘维度对应数据会直接相加)
#举例
a5 = np.random.randint(2,7,size = (2,6,9))
print(a1)
print(a5)
print(a1+a5)
print('='*30)
a6 = np.random.randint(2,7,size = (3,1,5))
a7 = np.random.randint(2,7,size = (5,1))
print(a6)
print(a7)
print(a6+a7)
#三、数组形状操作
#1、reshape将数组转换为指定形状,并返回修改后的结果,不改变原数组;resize将数组转换为指定形状,直接修改数组本身,并不返回任何值。
a1 = np.random.randint(0,10,size = (4,5))
a2 = a1.reshape(2,10)
print(a1)
print(a2)
a1.resize(5,4)
print(a1)
print('='*30)
#2、flatten与ravel方法。flatten将数组转换为一维数组,并将copy返回,后续修改不会影响原数组;ravel将数组转换后,将视图(引用)返回,后续修改会影响原数组。
a3 = np.random.randint(0,10,size = (4,5))
a4 = a3.flatten()
a4[1] = 100
print(a3)
print(a4)
print('='*30)
a5 = np.random.randint(0,10,size = (4,5))
a6 = a5.ravel()
a6[1] = 100
print(a5)
print(a6)
#四、数组z叠加操作
#1、vstack:将数组按垂直方向叠加,数组列数必须相同;hstack:将数组按水平方向进行叠加,数组行数必须相同。示例如下:
a1 = np.random.randint(0,10,size = (3,6))
a2 = np.random.randint(0,10,size = (2,6))
print(a1)
print(a2)
print(np.vstack([a1,a2]))
print('='*30)
a3 = np.random.randint(0,10,size = (2,2))
a4 = np.random.randint(0,10,size = (2,2))
print(a3)
print(a4)
print(np.hstack([a3,a4]))
print('='*30)
#2、concatenate(a,b,axis):axis=0时,等同于vstack;axis=1 时,等同于hstack;axis = None时,将两个数组都展开为一维并直接叠加
a1 = np.random.randint(0,10,size = (3,6))
a2 = np.random.randint(0,10,size = (3,2))
print(a1)
print(a2)
print(np.concatenate([a1,a2],axis = None))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值