pandas 每一列相加_Python3 numpy amp; pandas 学习笔记

19ed12d8e8d09e3490242d264249358e.png

写在前面

在用python做一些ML和DL的工作前,先看莫烦大佬的视频学习一下numpy和pandas这两个数据处理包,学习中记了一些笔记,便于自己日后查阅,同时发布到知乎希望能够帮助到其他小伙伴!

视频如下:

Numpy & Pandas (莫烦 Python 数据处理教程)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com
d42d5c1248bc8cead8d95a56523b8480.png

一、numpy & pandas 有什么用

ML、DL的基础,用于数据分析。

计算速度更快,比py自带的数据结构快很多,因为numpy和pandas是用C写的,panda是numpy的升级版。

矩阵计算速度快。


二、numpy & pandas 安装

pip install numpy

pip install pandas


三、numpy 基本属性

import numpy as np
array = np.array([[1,2,3],[2,3,4]])   #创建矩阵
print(array) #打印矩阵
print('number of dim:', array.ndim)   #矩阵维度
print('shape:', array.shape)   #矩阵形状(n*m) n行m列
print('size:', array.size)    #矩阵元素数量

四、numpy 创建 array

import numpy as np
a = np.array([2,23,4], dtype=np.int)  #定义数据的格式为int, 还有int64、int32、float64、float32
print(a.dtype)  #打印矩阵a中的元素数据类型b = np.array([[2,23,4],[2,32,4]]) #定义2*3的矩阵
c = np.zeros((3,4))  # 定义全部为0的矩阵,参数为shape
print(c)d = np.ones((3,4), dtype=np.int16)   # 定义全部为1的矩阵,参数为shape
print(d)e = np.empty((3,4))   # 定义全部为无穷小的矩阵,参数为shape
print(e)f = np.arange(10, 20, 2)   # 从10到20,不包含20,步长为2
print(f)g = np.arange(12).reshape((3,4))   # 从0到12,不包含12,步长为1,重新定义大小为3*4
print(g)h = np.linspace(1, 10, 20).reshape((4,5))     # 数列,从1到10,分为20段,最后一个是10..#也可以更改shape
print(h)

五、numpy 基础运算1

#数列操作
import numpy as np
a = np.array([10, 20, 30, 40])
b = np.arange(4)   #0,1,2,3print(a, b)  #[10 20 30 40] [0 1 2 3]
c = a-b
print(c)     #[10 19 28 37]c = a+b
print(c)     #[10 21 32 43]c = b**2     #b的平方
print(c)     #[0 1 4 9]c = 10*np.sin(a)  #对a的每一个元素求sin,然后乘以10   # tan、cos类似
print(c)     #[-5.44021111  9.12945251 -9.88031624  7.4511316 ]print(b)     #[0 1 2 3]
print(b<3)   #[ True  True  True False] #判断,同理可以用其他判断符
#矩阵操作
import numpy as np
a = np.array([[1,1],[0,1]])
b = np.arange(4).reshape((2,2))   #0,1,2,3print(a)
print(b)c = a*b   #元素逐个相乘
c_dot = np.dot(a, b) #矩阵乘法
print(c)
print(c_dot)c_dot_2 = a.dot(b) # 与c_dot = np.dot(a, b)相同a = np.random.random((2, 4))  #随机矩阵,0-1的均匀分布
print(a)print(np.sum(a))     #求和
print(np.min(a))     #最小值
print(np.max(a))     #最大值print(np.sum(a, axis=1))    #按照每一行或每一列计算,0表示对列操作,1表示对行操作#min 和 max 类似

六、numpy 基础运算2

import numpy as npa = np.arange(14, 2, -1).reshape((3, 4))
print(a)print(np.argmin(a))  #输出最小值的index
print(np.argmax(a))  #输出最大值的indexprint(np.mean(a))    #平均值 也可以 a.meanin
print(np.average(a)) #同mean, 但不可以a.averageprint(np.median(a))  #中位数print(np.cumsum(a))  #逐位相加 输出n*m个元素 一行,前缀和
print(np.diff(a))    #累差,每两个之间的差, n*(m-1)print(np.nonzero(a)) #输出非零元素的行和列 index,行为一个array,列为一个arrayprint(np.sort(a))    #默认按照每一行排序,行间不排序print(np.transpose(a))  #转置
print(a.T)  #转置print((a.T).dot(a))  # aT * aprint(np.clip(a, 5, 9))   #所有大于9的数变成了9,所有小于5的数变成了5,中间的数不变

其中很多计算函数,如mean、median 都可以在参数中指定axis,0表示每一列计算,1表示每一行计算。


七、numpy 索引

import numpy as npa = np.arange(3, 15)
print(a)print(a[3])   #输出3号元素a = a.reshape((3, 4))
print(a)
print(a[2])   #输出2号行
print(a[1][1]) #输出第一行第一列
print(a[1,1]) #等价于上一行
print(a[1,:]) #:代表所有数
print(a[1,1:3]) #第1行的  从第1列到第3列print()
for row in a:print(row) #循环输出每一行for col in a.T:print(col) #循环输出每一列for item in a.flat:     #转换成一行    #a.flatten() 返回一个一行的序列print(item) #循环输出每一个item

八、numpy array合并

import numpy as npa = np.array([1, 1, 1])
b = np.array([2, 2, 2])c = np.vstack((a, b))  #vertical stack  上下合并
print(c)
print(a.shape, c.shape)d = np.hstack((a, b))  #horizontal stack 左右合并
print(d)
print(a.shape, d.shape)print(a[np.newaxis, :])  #为行新加一个维度  变成了1*3
print(a[:, np.newaxis])  #为列新加一个维度  变成了3*1a = a[:, np.newaxis]
b = b[:, np.newaxis]
print(np.hstack((a,b)))   #纵向合并,变成3*2c = np.concatenate((a,b,b,a), axis=1)  #合并,0是上下合并,1是左右合并
print(c)
由于我之前一直使用的MATLAB,所以python的这一部分有些不能理解,为什么一维向量转置后还是本身?
经过测试,我个人理解numpy的工作很看重维度,一维下转置还是一维,所以还是自己本身。使用newaxis扩展维度后,变成了二维,才可以做真正的转置。
在一维下进行合并,也只能横向扩展,不能跨越维度

九、numpy的array分割

import numpy as npa = np.arange(12).reshape((3,4))
print(a)print(np.split(a,3,axis=0))   #0为按行切割, 1为按列切割
#不能进行不等的分割  split(a,2,axis=0)print(np.array_split(a,3,axis=1))  #可以不等分割print(np.vsplit(a,3))  #纵向分割 相当于axis=0
print(np.hsplit(a,2))  #横向分割 相当于axis=1

十、numpy的 copy & deep copy

import numpy as npa = np.arange(4)
print(a)
b = a
c = a
d = b
a[0] = 11
print(a)
print(b)  #与a相同,所以直接赋值是浅拷贝
print(c is a)  #Trueb = a.copy()  # deep copy
a[0] = 88
print(a)
print(b)

十一、pandas 基本介绍

如果说numpy像列表,那pandas像字典。

pandas可以为行和列自定义名字,在ML中,可以将其命名为feature的名字

import numpy as np
import pandas as pds = pd.Series([1,3,6,np.nan,44,1]) #有序号的列表
print(s)dates = pd.date_range('20160101', periods=6) #日期序列
print(dates)df = pd.DataFrame(np.random.randn(6,4),index = dates, columns=['a', 'b', 'c', 'd'])
#行是index  columns 是列
print(df)df1 = pd.DataFrame(np.arange(12).reshape((3,4)))
print(df1)  #行和列的名字默认是 从0开始的序号df2 = pd.DataFrame({'A':1.,'B':pd.Timestamp('20130102'),'C':pd.Series(1,index=list(range(4)),dtype='float32'),'D':np.array([3]*4,dtype='int32'),'E':pd.Categorical(["test", "train", "test", "train"]),'F':'foo'})
#可以传入一个字典,其中A B C D E F 为列名
print(df2)print(df2.dtypes) #查看每一列的数据类型
print(df2.index) #每一行的名字
print(df2.columns)  # 每一列的名字
print(df2.values)   #每一个值
print(df2.describe())  #输出每一列的 count、mean、std、min、25%、50%、75%、max
print(df2.T)  #转置
print(df2.sort_index(axis=1,ascending=False))
#axis为1是按列排序,0是按行排序,ascending=false:倒序排序print(df2.sort_index(axis=0,ascending=False))print(df2.sort_values(by='E')) #对其中的值排序,根据某一列

十二、pandas 选择数据

import numpy as np
import pandas as pddates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)), index=dates, columns=['A','B','C','D'])print(df)
print(df['A'], df.A)  #打印第A列
print(df[0:3], df['20130102':'20130104']) #打印第0-3行,然后打印第02-04行#select by label:loc
print(df.loc['20130102'])   #按照标签选择
print(df.loc[:,['A','B']])  #所有行的A列和B列
print(df.loc['20130102',['A','B']])  #选择某些数据#select by position:iloc
print(df.iloc[3, 1])   #第三行第一列
print(df.iloc[3:5, 1:3])   #切片
print(df.iloc[[1,3,5], 1:3])  #不连续的筛选#mixed selection:ix
#print(df.ix[:3,['A','C']])  #报错,python3已经弃用ix#Boolean indexing
print(df[df.A > 8])   #筛选出A列中大于8的行
ix已经弃用,会报错

十三、pandas 设置值

import numpy as np
import pandas as pddates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)), index=dates, columns=['A','B','C','D'])
print(df)df.iloc[2,2] = 1111  #按照index修改值
df.loc['20130101','B'] = 2222
df[df.A>4] = 0   #把第A列大于4的行都改为0,修改所有列的
print(df)df = pd.DataFrame(np.arange(24).reshape((6,4)), index=dates, columns=['A','B','C','D'])
df.A[df.A>4] = 0 #只修改第A列的
print(df)df['F'] = np.nan  #增加一列 nan
df['E'] = pd.Series([1,2,3,4,5,6], index=dates)  #增加一列,序列
print(df)

十四、pandas 处理丢失数据

import numpy as np
import pandas as pddates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)), index=dates, columns=['A','B','C','D'])
df.iloc[0,1] = np.nan
df.iloc[1,2] = np.nan  #创造丢失数据
print(df)#drop
print(df.dropna(axis=0, how='any'))  #丢掉数据,axis=0 丢掉这一行
#how={'any','all'}   any: 有一个nan 就丢掉这一行, all:全部为nan才丢掉,  默认anyprint(df.dropna(axis=1, how='any'))  #丢掉数据,axis=1 丢掉这一列#fill
print(df.fillna(value=0))   #将nan填充为0
print(df.isnull())    #对每个value判断是否为nan  返回beal 矩阵
print(np.any(df.isnull())==True)   #只要有一个丢失的数据,就返回true

十五、pandas 导入导出数据

import numpy as np
import pandas as pd#读入
data = pd.read_csv('student.csv')  #读取csv表格
print(data)  #会在每一行自动加一个索引 0-n#存储
data.to_pickle('student.pickle')   #写出为pickle文件

读为 read_#

写入为 to_#

其中#都可以用如下字符代替:

  • csv
  • excel
  • hdf
  • sql
  • json
  • msgpack
  • html
  • gbq
  • stata
  • sas
  • clipboard
  • pickle

十六、pandas 合并 concat

import numpy as np
import pandas as pd# concatenatingdf1 = pd.DataFrame(np.ones((3,4))*0, columns=['a', 'b','c', 'd'])
df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a', 'b','c', 'd'])
df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a', 'b','c', 'd'])
print(df1)
print(df2)
print(df3)
res = pd.concat([df1, df2, df3], axis=0) #合并, 0为纵向合并,1为横向合并
#此方法行的index重复了
print(res)res = pd.concat([df1, df2, df3], axis=0, ignore_index=True)  #index重新排序
print(res)#join  ['inner', 'outer']df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a', 'b','c', 'd'], index=[1,2,3])
df2 = pd.DataFrame(np.ones((3,4))*1, columns=['b', 'c','d', 'e'], index=[2,3,4])
print(df1)
print(df2)res = pd.concat([df1, df2])  #默认为outer模式合并,把没有的列用nan填充
print(res)
res = pd.concat([df1, df2], join='inner')  #inner为只合并共有的列
print(res)#res = pd.concat([df1,df2], axis=1, join_axes=[df1.index])
#横向合并,由于行的index不一样,使用join_axes使得其按照df1的index进行合并,df2中缺失值用nan填充
#由于join_axes已被弃用,会报错#append
res = df1.append([df2,df3], ignore_index=True)
#在其后追加
print(res)s1 = pd.Series([1,2,3,4],index=['a','b','c','d'])
res = df1.append(s1, ignore_index=True)
print(res)
join_axes 已被弃用
其中 s1 = pd.Series([1,2,3,4],index=['a','b','c','d'])
对列标签用了index,如果使用columns会报错
与第八讲补充内容一致,由于此向量为一维,所以不存在列的概念,故只能使用index

十七、pandas 合并 merge

import numpy as np
import pandas as pd#merging two df by key/keys.(may be used in database)
#simple exampleleft = pd.DataFrame({'key':['K0', 'K1', 'K2', 'K3'],'A':['A0', 'A1', 'A2', 'A3'],'B':['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key':['K0', 'K1', 'K2', 'K3'],'C':['C0', 'C1', 'C2', 'C3'],'D':['D0', 'D1', 'D2', 'D3']})
print(left)
print(right)
res = pd.merge(left, right, on='key') #基于key这一列合并
print(res)#consider two keys
left = pd.DataFrame({'key1':['K0', 'K0', 'K1', 'K2'],'key2':['K0', 'K1', 'K0', 'K1'],'A':['A0', 'A1', 'A2', 'A3'],'B':['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key1':['K0', 'K1', 'K1', 'K2'],'key2':['K0', 'K0', 'K0', 'K0'],'C':['C0', 'C1', 'C2', 'C3'],'D':['D0', 'D1', 'D2', 'D3']})
print(left)
print(right)
res = pd.merge(left, right, on=['key1','key2'])  #默认只合并相同的key (how='inner')
print(res)#how = ['left', 'right', 'outer', 'inner']
res = pd.merge(left, right, on=['key1','key2'], how='outer') #全部合并,没有的用nan填充
print(res)
res = pd.merge(left, right, on=['key1','key2'], how='right') #以right的key为基准进行填充
print(res)#indicator
df1 = pd.DataFrame({'col1':[0,1], 'col_left':['a', 'b']})
df2 = pd.DataFrame({'col1':[1,2,2], 'col_right':[2,2,2]})
print(df1)
print(df2)
res = pd.merge(df1, df2, on='col1', how='outer', indicator=True) #指示出如何合并的 默认在_merge列
print(res)
res = pd.merge(df1, df2, on='col1', how='outer', indicator='indicator_column')#更改了合并方式的列名
print(res)#merged by index
left = pd.DataFrame({'A':['A0', 'A1', 'A2'],'B':['B0', 'B1', 'B2']},index=['K0', 'K1', 'K2'])
right = pd.DataFrame({'C':['C0', 'C2', 'C3'],'D':['D0', 'D2', 'D3']},index=['K0', 'K2', 'K3'])
print(left)
print(right)
# left_index and right_index
res = pd.merge(left, right, left_index=True, right_index=True, how='outer')
#left_index 和 right_index 默认false, 表示考虑index来合并
print(res)#handle overlapping
boys = pd.DataFrame({'k':['K0','K1','K2'], 'age':[1,2,3]})
girls = pd.DataFrame({'k':['K0','K0','K3'], 'age':[4,5,6]})
print(boys)
print(girls)
res = pd.merge(boys, girls, on='k', how='inner', suffixes=['_boy', '_girl'])
#为left 和 right 相同的列增加前缀,为不同的列
print(res)

十八、pandas plot 画图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt#plot data#Series
data = pd.Series(np.random.randn(1000), index=np.arange(1000))
data = data.cumsum() #累加和
print(data)
data.plot()   #画图
plt.show()#DataFrame
data = pd.DataFrame(np.random.randn(1000,4),index=np.arange(1000),columns=list("ABCD"))
data = data.cumsum()
print(data.head()) #打印前5个
data.plot()
plt.show()#plot methods:
#bar, hist, box, kde, area, scatter, hexbin, pie
ax = data.plot.scatter(x='A', y='B', color='DarkBlue', label='Claass 1') #分布点
data.plot.scatter(x='A', y='C', color='DarkGreen', label='Class 2', ax=ax)
#一张图画两组数据
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言学生成绩查询系统2018,南昊网上阅卷学生成绩查询系统

2018南昊网上阅卷学生成绩查询系统开放了&#xff0c;这是面向南昊当地的中小学生们的一款优质的查询学习成绩的平台&#xff0c;只要登录自己的账号就能查询自己的成绩排名情况。对于老师来说这也是一款网上阅卷系统&#xff0c;是一个非常幼稚的学习平台。家长也可以登录本平…

python3 批量定义多个变量_Python3 基本数据类型详解

文章来源&#xff1a;加米谷大数据Python 中的变量不需要声明。每个变量在使用前都必须赋值&#xff0c;变量赋值以后该变量才会被创建。在 Python 中&#xff0c;变量就是变量&#xff0c;它没有类型&#xff0c;我们所说的"类型"是变量所指的内存中对象的类型。等号…

控制cpu_I/O控制器及控制方式,了解一下

1、什么是I/O控制器由于CPU无法直接控制I/O设备的机械部件&#xff0c;因此I/O设备还要有个电子部件作为CPU和I/O设备机械部件之间的“中介”&#xff0c;用于实现CPU对设备的控制&#xff0c;这个电子部件就是I/O控制器&#xff0c;又称为设备控制器。I/O控制器是控制计算机输…

图形化c语言编程,「分享」C语言如何编写图形界面

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼贴吧内经常有人问C语言是不是只能用于字符终端界面开发&#xff0c;不能用于图形界面。大家也都有回答&#xff0c;需要其他的库。MFC&#xff0c;GTK&#xff0c;QT。本人近期刚用GTK库加上纯C写成了第一个LINUX实用程序。现在与大…

fpga初始化错误_FPGA低温启动失败

本文来源&#xff1a;https://blog.csdn.net/shanekong/article/details/29923925现象描述在给 medium 板光端机做低温试验时&#xff0c;分别给发送版、接收板断电重新启动&#xff0c;发现有的板子在 -40 可以启动&#xff0c;而有些板子在 -20 都不能启动&#xff0c;需要升…

机器人最新天赋符文天赋加点图_常德2020中小学机器人竞赛开赛 286名选手现场比拼技能...

尚一网讯(记者 肖志芳 文/图)自己设计机器人&#xff0c;还要操控他们完成各项高难度动作进行竞技对抗&#xff0c;这似乎挺难&#xff0c;但是许多中小学生却对此游刃有余。10月11日&#xff0c;常德市2020年中小学机器人竞赛在武陵区第一小学举行&#xff0c;来自全市143支代…

cmd imp导入dmp文件_这是一篇长篇入门级数据库讲解:oracle数据库数据导入导出步骤...

正如标题一样&#xff0c;本文内容主要介绍了浅谈入门级oracle数据库数据导入导出步骤&#xff0c;文章通过步骤解析介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧&#xff01;&#xff01;&…

linux 使用ssr客户端_【第一期】基于 @vue/cli3 与 koa 创建 ssr 工程

什么是基于同构代码的 SSR 服务(Server-side rendering based on isomorphic code)首先&#xff0c;我们需要先明白什么是 spa (single page application)&#xff0c;以及基于 vue 的 spa 是如何工作的&#xff0c;这里不展开&#xff0c;请参考&#xff1a;单页应用:https://…

读保护_混合ASIL系统中不同安全等级模块间的边界保护

01功能安全组件的软件开发针对ISO 26262对功能安全软件研发的要求&#xff0c;AUTOSAR将功能安全需求进行了具体拆分。当前的AUTOSAR规范囊括了诸多功能安全组件软件开发的需求概念。在AUTOSAR系统设计的架构中&#xff0c; 从系统功能设计到ECU功能实现&#xff0c;每个功能特…

android studio javah不是内部或外部命令,Android Studio 环境搭建参考,jdk10javac命令提示不是内部或外部命令...

https://blog.csdn.net/qq_33658730/article/details/78547789 win10下Android Studio和SDK下载、安装和环境变量配置http://yanmin99.com/ android-0基础从入门到精通环境变量ANDROID_HOMEE:\Program Files (x86)\Android\SdkJAVA_HOMEE:\Program Files\Java\jdk1.8.0_161TOMC…

starops 云效运维 文档_阿里云 SAE 携手云效助力「石家庄掌讯」持续交付、降本提效...

背景石家庄掌讯信息技术有限公司创立于2009年&#xff0c;是一家提供企业信息化咨询、创新型软件产品、电商代运营服务&#xff0c;标准化管理、快速发展的高新技术企业。当前公司正处于企业互联网市场突破转型重要阶段&#xff0c;希望将更多精力转移到业务创新&#xff0c;提…

setdata改数组里的值 微信小程序_今日艰难笔记redux小程序随记

redux的前身Flux https://zhuanlan.zhihu.com/p/38050036Flux的一整套抽象(action&#xff0c;dispatcher&#xff0c;store)&#xff0c;在单向数据流的基础上可以提高应用的可维护性和代码的可预测性。然而&#xff0c;全局action多store的架构面对复杂的应用依然不能很好地解…

竞赛数据清洗缺失值_Kaggle 数据清洗挑战 Day 1 - 手把手教你五步处理缺失值

前些天报名参加了 Kaggle 的 Data Cleaning 5天挑战&#xff0c;5天的任务如下&#xff1a;Day 1: Handling missing valuesDay 2: Data scaling and normalizationDay 3: Cleaning and parsing datesDay 4: Fixing encoding errors (no more messed up text fields!)Day 5: Fi…

html5中行内样式写法,react怎么写行内样式?

react怎么写行内样式&#xff1f;下面本篇文章给大家介绍一下react 行内样式几种写法。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。react 行内样式几种写法法一这是评论列表组件1法二const title{color:"red",fontSize:3…

程序左上角的字_微信内测7.0.7新版本,小程序迎来大改动!

最近几个月来&#xff0c;微信就跟打了鸡血一样不断更新了多个版本上线多个新功能。此前7月末&#xff0c;微信安卓7.0.6带来了将收藏笔记&#xff0c;文件预览等页面设为浮窗的功能&#xff0c;目前最多支持5个文档或笔记设为浮窗。这不&#xff0c;距离微信7.0.6 for Android…

html 跑步比赛小游戏,疯狂趣味跑步竞赛3D

疯狂趣味跑步竞赛3D是一款跑酷类型的休闲游戏&#xff0c;游戏在整体画面上搭配了最新的技术&#xff0c;使得游戏画面看起来非常华丽&#xff0c;人物的建模也很可爱。玩家在游戏中可以在各种风格的跑道上进行比赛&#xff0c;还可以在线跟别的玩家进行匹配。喜欢这款游戏的快…

得到进程id_搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?

守护进程概念&#xff1a;守护进程&#xff0c;也就是通常所说的Daemon进程&#xff0c;是Linux中的后台服务进程。周期性的执行某种任务或等待处理某些发生的事件。Linux系统有很多守护进程&#xff0c;大多数服务都是用守护进程实现的。比如&#xff1a;像我们的tftp&#xf…

w7计算机的收藏夹里弄出桌面,Win7电脑桌面的便签怎么弄出来?

原标题&#xff1a;Win7电脑桌面的便签怎么弄出来&#xff1f;可能很多人都不知道&#xff0c;作为常用的一款电脑桌面操作系统&#xff0c;Windows 7上除了有Txt记事本和Office办公文档外&#xff0c;还有便笺小工具呢&#xff01;这款便笺小工具虽然很不起眼&#xff0c;但是…

native html5 区别,H5与Native优劣对比

即将启动爱奇艺商城(mall.iqiyi.com)移动端的native化。项目开始之前当然要梳理下为什么做native&#xff0c;究竟H5跟native比有什么劣势&#xff0c;而H5又为什么占比那么高并且有“Html5才是未来”的说法呢。下面简单理下对比。H5&#xff0c;即Html5&#xff0c;指第5代HTM…

html制作圆盘时钟,jquery+html5制作超酷的圆盘时钟表

自己封装的一个用HTML5jQuery写的时钟表代码&#xff1a;超酷数码钟表//引用的是在线jquery地址&#xff0c;如果不行请自行下载切换(function($){$.fn.drawClock function(options){var mainId $(this);//设置默认参数var defaultOptions {width: 300px,height: 300px,marg…