Python numpy中矩阵的基本用法汇总


Posted in Python onFebruary 12, 2019

Python矩阵的基本用法

mat()函数将目标数据的类型转化成矩阵(matrix)

1,mat()函数和array()函数的区别

Numpy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素,虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中Numpy函数库中的matrix与MATLAB中matrices等价。

直接看一个例子:

import numpy as np
 
a = np.mat('1 3;5 7')
b = np.mat([[1,2],[3,4]])
print(a)
print(b)
print(type(a))
print(type(b))
c = np.array([[1,3],[4,5]])
print(c)
print(type(c))

结果:

[[1 3]
 [5 7]]
[[1 2]
 [3 4]]
<class 'numpy.matrixlib.defmatrix.matrix'>
<class 'numpy.matrixlib.defmatrix.matrix'>
[[1 3]
 [4 5]]
<class 'numpy.ndarray'>

首先,mat() 函数与array()函数生成矩阵所需的数据格式有区别,mat()函数中数据可以为字符串以分号(;)分割或者为列表形式以逗号(,)分割,而array()函数中数据只能为后者形式。

其次,两者的类型不同,用mat函数转换为矩阵后才能进行一些线性代数的操作。

from numpy import *
 
# 构建一个4*4的随机数组
array_1 = random.rand(4,4)
print(array_1)
print(type(array_1))
'''
[[0.12681561 0.26644355 0.03582107 0.71475804]
 [0.01380711 0.85308305 0.37838406 0.83663897]
 [0.20034209 0.5736587 0.56692541 0.64008518]
 [0.97780979 0.129229 0.37688616 0.55341492]]
 
 <class 'numpy.ndarray'>
 '''
# 使用mat函数将数组转化为矩阵
matrix_1 = mat(array_1)
print(matrix_1)
print(type(matrix_1))
'''
[[0.32538457 0.60674013 0.68625186 0.58957989]
 [0.26465813 0.93378939 0.12944934 0.95064032]
 [0.65683256 0.01352025 0.11932895 0.9361348 ]
 [0.11667241 0.16077876 0.50904118 0.44128675]]
 
<class 'numpy.matrixlib.defmatrix.matrix'>
'''

 2,mat()函数创建常见的矩阵

import numpy as np
 
# 创建一个3*3的零矩阵,矩阵这里zeros函数的参数是一个tuple类型(3,3)
data1 = np.mat(np.zeros((3,3)))
print(data1)
'''
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
 
'''
# 创建一个2*4的1矩阵,默认是浮点型的数据,如果需要时int,可以使用dtype=int
data2 = np.mat(np.ones((2,4)))
print(data2)
'''
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]]
'''
 
# 这里使用numpy的random模块
# random.rand(2,2)创建的是一个二维数组,但是需要将其转化为matrix
data3 = np.mat(np.random.rand(2,2))
print(data3)
'''
[[0.62002668 0.55292404]
 [0.53018371 0.1548954 ]]
'''
 
# 生成一个3*3的0-10之间的随机整数矩阵,如果需要指定下界可以多加一个参数
data4 = np.mat(np.random.randint(10,size=(3,3)))
print(data4)
'''
[[0 4 1]
 [7 9 9]
 [9 0 4]]
'''
 
# 产生一个2-8之间的随机整数矩阵
data5 = np.mat(np.random.randint(2,8,size=(2,5)))
print(data5)
'''
[[4 6 3 3 4]
 [4 3 3 3 6]]
'''
 
# 产生一个2*2的对角矩阵
data6 = np.mat(np.eye(2,2,dtype=int))
print(data6)
'''
[[1 0]
 [0 1]]
'''
# 生成一个对角线为1,2,3的对角矩阵
a1 = [1,2,3]
a2 = np.mat(np.diag(a1))
print(a2)
'''
[[1 0 0]
 [0 2 0]
 [0 0 3]]
'''

2.1,zeros

zeros函数是生成指定维数的全0数组

>>myMat=np.zeros(3) ###生成一个一维的全0数组
>>print(myMat)
>>array([0.,0.,0.])
 
 
>>myMat1=np.zeros((3,2)) ####生成一个3*2的全0数组
>>print(myMat)
>>array([[0.,0.],
 [0.,0.]
 [0.,0.]])

2.2,ones

ones函数是用于生成一个全1的数组

>>onesMat=np.ones(3) ###1*3的全1数组
>>print(onesMat)
>>array([1.,1.,1.])
 
 
 
>>onesMat1=np.ones((2,3)) ###2*3的全1数组
>>print(onesMat1)
>>array([[1.,1.,1.],[1.,1.,1.]])

2.3,eye

eye函数用户生成指定行数的单位矩阵

>>eyeMat=np.eye(4) 
>>print(eyeMat)
>>array([[1.,0.,0.,0.],
 [0.,1.,0.,0.],
 [0.,0.,1.,0.,],
 [0.,0.,0.,1.]])

2.4,full

numpy.full(shape,fill_value=num)用于创建一个自定义形状的数组,可以自己指定一个值,用它填满整个数组。

fill_value 用来填充的值,可以是数字,也可以是字符串

nd_test = np.full(shape=(2,3,4),fill_value='ai')
print(nd_test)
 
array([[['ai', 'ai', 'ai', 'ai'],
 ['ai', 'ai', 'ai', 'ai'],
 ['ai', 'ai', 'ai', 'ai']],
 
 [['ai', 'ai', 'ai', 'ai'],
 ['ai', 'ai', 'ai', 'ai'],
 ['ai', 'ai', 'ai', 'ai']]], dtype='<U2')

2.5 nonzero()

nonzero函数是numpy中用于得到数组array中非零元素的位置(数组索引)函数。它的返回值是一个长度为a.ndim(数组a的轴数)的元组,元组的每个元素都是一个整数数组,其值为非零元素的下标在对应轴上的值。

只有a中非零元素才会有索引值,那些零值元素没有索引值,通过a[nonzero(a)]得到所有a中的非零值。

import numpy as np
 
SS = [0,0,0,0] 
re = np.array(SS)
print(SS)
print(np.nonzero(re))
'''
[0, 0, 0, 0]
(array([], dtype=int64),)
'''

a是一维数组(索引1和索引2的位置上元素的值非零)

>>> import numpy as np
>>> a = [0,2,3]
>>> b = np.nonzero(a)
>>> b
(array([1, 2], dtype=int64),)
>>> np.array(b).ndim
2

a是多维数组

from numpy import *
 
b = array([[1,1,1,0,1,1],[1,1,1,0,1,0],[1,1,1,0,1,1]])
print(b)
c = nonzero(b)
print(c)
'''
[[1 1 1 0 1 1]
 [1 1 1 0 1 0]
 [1 1 1 0 1 1]]
(array([0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2], dtype=int64),
array([0, 1, 2, 4, 5, 0, 1, 2, 4, 0, 1, 2, 4, 5], dtype=int64))
'''

解释一下:矩阵 b中,b[0,0] b[0,1],b[0,2],b[0,4],b[0,5],b[1,0],b[1,1],b[1,2],b[1,4],b[2,0],b[2,1],b[2,2],b[2,4],b[2,5]元素的值非零。

当使用布尔数组直接作为下标对象护着元组下标对象中有布尔数组时,都相当于用nonzero()将布尔数组转换成一组整数数组,然后使用整数数组进行下标计算。

nonzero(a)返回数组a中值不为零的元素的下标,它的返回值是一个长度为a.ndim(数组a的轴数)的元组,元组的每个元素都是一个整数数组,其值为非零元素的下标在对应轴上的值。例如对于1维布尔数组b1,nonzero(b1)所得到的是一个长度为1的元组,它表示b1[0]和b1[2]的值不为0(FALSE)。

import numpy as np
 
b1 = np.array([True,False,True,False])
res1 = np.nonzero(b1)
print(res1)
# (array([0, 2], dtype=int64),)

对于二维数组b2,nonzero(b2)所得到的是一个长度为2的元组,它的第0个元素是数组a中值不为0的元素的第0个轴的下标,第一个元素则是第1轴的下标,因此从下面得到的结果可知b2[0,0] , n2[0,2]和b2[1,0]的值不为0:

b2 = np.array([[True,False,True],[True,False,False]])
res2 = np.nonzero(b2)
print(res2)
# (array([0, 0, 1], dtype=int64), array([0, 2, 0], dtype=int64))

当布尔数组直接做维下标时,相当于使用由nonzero()转换之后的元组作为下标对象:

b3 = np.arange(3*4*5).reshape(3,4,5)
res3 = b3[np.nonzero(b2)]
print(res3)
'''
[[ 0 1 2 3 4]
 [10 11 12 13 14]
 [20 21 22 23 24]]
'''

3,常见的矩阵运算

3.1,矩阵相乘(*)

就是矩阵的乘法操作,要求左边矩阵的列和右边矩阵的行数要一致

from numpy import *
''' 1*2 的矩阵乘以2*1 的矩阵 得到1*1 的矩阵'''
 
a1 = mat([1,2])
print(a1)
a2 = mat([[1],[2]])
print(a2)
a3 = a1*a2
print(a3)
'''
[[1 2]]
[[1]
 [2]]
[[5]]
'''

3.2,矩阵点乘(multiply)

矩阵点乘则要求矩阵必须维数相等,即M*N维矩阵乘以M*N维矩阵

from numpy import *
''' 矩阵点乘为对应矩阵元素相乘'''
 
a1 = mat([1,1])
print(a1)
a2 = mat([2,2])
print(a2)
a3 = multiply(a1,a2)
print(a3)
'''
[[1 1]]
[[2 2]]
[[2 2]]
'''
 
 
a1 = mat([2,2])
a2 = a1*2
print(a2)
# [[4 4]]

3.3,矩阵求逆变换(.I)

from numpy import *
''' 矩阵求逆变换:求矩阵matrix([[0.5,0],[0,0.5]])的逆矩阵'''
 
a1 = mat(eye(2,2)*0.5)
print(a1)
a2 = a1.I
print(a2)
'''
[[0.5 0. ]
 [0. 0.5]]
[[2. 0.]
 [0. 2.]]
'''

3.4,矩阵求转置(.T)

from numpy import *
'''矩阵的转置'''
 
a1 = mat([[1,1],[0,0]])
print(a1)
a2 = a1.T
print(a2)
'''
[[1 1]
 [0 0]]
[[1 0]
 [1 0]]
 '''

3.5,求矩阵对应列行的最大值,最小值,和。

计算每一列,行的和

from numpy import *
'''计算每一列,行的和'''
 
a1 = mat([[1,1],[2,3],[4,5]])
print(a1)
# 列和,这里得到的是1*2的矩阵
a2=a1.sum(axis=0)
print(a2)
'''
[[7 9]]
'''
# 行和,这里得到的是3*1的矩阵
a3=a1.sum(axis=1)
print(a3)
'''
[[2]
 [5]
 [9]]
 '''
# 计算第一行所有列的和,这里得到的是一个数值
a4=sum(a1[1,:])
print(a4)
'''
5
'''

计算最大,最小值和索引

from numpy import *
'''计算每一列,行的和'''
 
a1 = mat([[1,1],[2,3],[4,5]])
print(a1)
'''
[[1 1]
 [2 3]
 [4 5]]
'''
# 计算a1矩阵中所有元素的最大值,这里得到的结果是一个数值
maxa = a1.max()
print(maxa) #5
# 计算第二列的最大值,这里得到的是一个1*1的矩阵
a2=max(a1[:,1])
print(a2) #[[5]]
# 计算第二行的最大值,这里得到的是一个一个数值
maxt = a1[1,:].max()
print(maxt) #3
# 计算所有列的最大值,这里使用的是numpy中的max函数
maxrow = np.max(a1,0)
print(maxrow) #[[4 5]]
# ;//计算所有行的最大值,这里得到是一个矩阵
maxcolumn = np.max(a1,1)
print(maxcolumn)
'''
[[1]
 [3]
 [5]]
'''
# 计算所有列的最大值对应在该列中的索引
maxindex = np.argmax(a1,0)
print(maxindex) #[[2 2]]
# 计算第二行中最大值对应在改行的索引
tmaxindex = np.argmax(a1[1,:])
print(tmaxindex) # 1

3.6,矩阵的分隔和合并 (vstack  hstack)

矩阵的分割,同列表和数组的分割一致

from numpy import *
''' 矩阵的分隔,同列表和数组的分隔一致'''
 
a = mat(ones((3,3)))
print(a)
# 分隔出第二行以后的行和第二列以后的列的所有元素
b = a[1:,1:]
print(b)
'''
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
[[1. 1.]
 [1. 1.]]
'''

矩阵的合并

from numpy import *
 
a = mat(ones((2,2)))
print(a)
b = mat(eye(2))
print(b)
# 按照列和并,即增加行数
c = vstack((a,b))
print(c)
# 按照行合并,即行数不变,扩展列数
d = hstack((a,b))
print(d)
'''
[[1. 1.]
 [1. 1.]]
 
[[1. 0.]
 [0. 1.]]
 
[[1. 1.]
 [1. 1.]
 [1. 0.]
 [0. 1.]]
 
[[1. 1. 1. 0.]
 [1. 1. 0. 1.]]
'''

3.7,矩阵,列表,数组的转换

列表可以修改,并且列表中元素可以使不同类型的数据,如下:

1
li =[[1],'hello',3]

numpy中数组,同一个数组中所有元素必须为同一个类型,有几个常见的属性:

from numpy import *
 
a=array([[2],[1]])
print(a )
dimension=a.ndim
m,n=a.shape
# 元素总个数
number=a.size
print(number)
# 2
# 元素的类型
str=a.dtype
print(str)
# int32

numpy中的矩阵也有与数组常见的几个属性,他们之间的转换如下:

from numpy import *
 
# 列表
a1 = [[1,2],[3,2],[5,2]]
# 将列表转化为二维数组
a2 = array(a1)
# 将列表转化成矩阵
a3 = mat(a1)
# 将矩阵转化成数组
a4 = array(a3)
# 将矩阵转换成列表
a5=a3.tolist()
# 将数组转换成列表
a6=a2.tolist()
print(type(a1))
print(type(a2))
print(type(a3))
print(type(a4))
print(type(a5))
print(type(a6))
'''
<class 'list'>
<class 'numpy.ndarray'>
<class 'numpy.matrixlib.defmatrix.matrix'>
<class 'numpy.ndarray'>
<class 'list'>
<class 'list'>
'''

注意:当列表为一维的时候,将他们转换成数组和矩阵后,再通过tolist()转换成列表是不相同的,这里需要做一些小小的修改,如下:

from numpy import *
 
a1=[1,2,3]
print(a1)
print(type(a1))
a2=array(a1)
print(a2)
print(type(a2))
a3=mat(a1)
print(a3)
print(type(a3))
'''
[1, 2, 3]
<class 'list'>
[1 2 3]
<class 'numpy.ndarray'>
[[1 2 3]]
<class 'numpy.matrixlib.defmatrix.matrix'>
 
'''
a4=a2.tolist()
print(a4)
print(type(a4))
a5=a3.tolist()
print(a5)
print(type(a5))
'''
[1, 2, 3]
<class 'list'>
[[1, 2, 3]]
<class 'list'>
'''
 
a6=(a4 == a5)
print(a6)
print(type(a6))
a7=(a4 is a5[0])
print(a7)
print(type(a7))
'''
False
<class 'bool'>
False
<class 'bool'>
'''

矩阵转换成数值,存在以下一种情况:

from numpy import *
 
dataMat=mat([1])
print(dataMat)
print(type(dataMat))
'''
[[1]]
<class 'numpy.matrixlib.defmatrix.matrix'>
'''
 
# 这个时候获取的就是矩阵的元素的数值,而不再是矩阵的类型
val=dataMat[0,0]
print(val)
print(type(val))
'''
1
<class 'numpy.int32'>
'''

 4, matrix.getA()

getA()是numpy的一个函数,作用是将矩阵转成一个ndarray,getA()函数和mat()函数的功能相反,是将一个矩阵转化为数组。

如果不转,矩阵的每个元素将无法取出,会造成越界的问题,其具体解释如下:

matrix.getA()
 Return self as an ndarray object.

Equivalent to np.asarray(self)
Parameters: None
Returns: __ret_: ndarray
  self as an ndarray

举例如下:

>>> x = np.matrix(np.arange(12).reshape((3,4))); x
matrix([[ 0, 1, 2, 3],
 [ 4, 5, 6, 7],
 [ 8, 9, 10, 11]])
>>> x.getA()
array([[ 0, 1, 2, 3],
 [ 4, 5, 6, 7],
 [ 8, 9, 10, 11]])

那么为什么需要转换呢?

因为在画出数据集合的函数中,代码如下(取自机器学习实战Logistic回归最佳拟合直线的函数)

def plotBestFit(weights):
 weights = weights.getA()
 ...
 for i in range(n):
 #分类
 if int(labelMat[i]) == 1:
  xcord1.append(dataArr[i, 1])
  ycord1.append(dataArr[i, 2])
 else:
  xcord2.append(dataArr[i, 1])
  ycord2.append(dataArr[i, 2])

在这个代码,我们需要取出其中每一行每一列的值

如果是矩阵的话,我们测试一下:

>>> b
matrix([[1, 2, 3, 4],
 [1, 2, 3, 4],
 [1, 2, 3, 4],
 [1, 2, 3, 4]])
>>> b[1][1]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "D:\Python\lib\site-packages\numpy\matrixlib\defmatrix.py", line 284, in __getitem__
 out = N.ndarray.__getitem__(self, index)
IndexError: index 1 is out of bounds for axis 0 with size 1
>>>
>>> len(b[1])
1
>>> len(b[1][0])
1

可以发现我们取出矩阵的一行大小只有1,如果你使用b[1][1],b[1][2]之类的就会越界

当我们转为np.array类型时

>>> c
array([[1, 2, 3, 4],
 [1, 2, 3, 4],
 [1, 2, 3, 4],
 [1, 2, 3, 4]])
>>> len(c[1])
4
>>> c[1][1]
2
>>>

可以看出,我们可以取出任何一个值。

Python矩阵的切片

1,行操作

li = [[1,1],[1,3],[2,3],[4,4],[2,4]]
from numpy import *
 
a = [[1,2],[3,4],[5,6]]
a = mat(a)
# 打印整个矩阵
print(a[0:])
'''
[[1 2]
 [3 4]
 [5 6]]
 '''
 
# 打印矩阵E从1行开始到末尾行的内容
print(a[1:])
'''
[[3 4]
 [5 6]] 
'''
 
# 表示打印矩阵E 从1行到3行的内容
print(a[1:3])
'''
[[3 4]
 [5 6]]
 '''

2,列操作

li = [[1,1],[1,3],[2,3],[4,4],[2,4]]
from numpy import *
mat = mat(li)
# 在整个矩阵的基础下,打印1列(指的是序列为1的列
print(mat[:,0])
'''
[[1]
 [1]
 [2]
 [4]
 [2]]
'''
# 在矩阵的1行到2行([1,3)) 的前提下打印两列
# 2 列不是指两列,而是序号为2的列
print(mat[1:3,1])
'''
[[3]
 [3]]
 '''

Python numpy库其他函数用法

Numpy 的tile函数用法

tile函数位于Python模块numpy.lib.shape_base中,他的功能是重复某个数组,比如 tile(A,reps),功能是将数组A重复reps次,构成一个新的数组。

1,函数的定义与说明

函数格式为   tile(A,reps)

A和reps 都是array_like

A的类型众多,几乎所有类型都可以:array  list  tuple  dict  matrix 以及基本数据类型Int string  float 以及bool类型。

reps 的类型也很多,可以是tuple  list  dict  array int  bool  但不可以是float   string  matrix类型。

2,示例

>>> a = np.array([0, 1, 2])
 >>> np.tile(a, 2)
 array([0, 1, 2, 0, 1, 2])
 >>> np.tile(a, (2, 2))
 array([[0, 1, 2, 0, 1, 2],
  [0, 1, 2, 0, 1, 2]])
 >>> np.tile(a, (2, 1, 2))
 array([[[0, 1, 2, 0, 1, 2]],
  [[0, 1, 2, 0, 1, 2]]])
 
 >>> b = np.array([[1, 2], [3, 4]])
 >>> np.tile(b, 2)
 array([[1, 2, 1, 2],
  [3, 4, 3, 4]])
 >>> np.tile(b, (2, 1))
 array([[1, 2],
  [3, 4],
  [1, 2],
  [3, 4]])
 
 >>> c = np.array([1,2,3,4])
 >>> np.tile(c,(4,1))
 array([[1, 2, 3, 4],
  [1, 2, 3, 4],
  [1, 2, 3, 4],
  [1, 2, 3, 4]])
from numpy import *
 
code1 = tile(1,2)
print(code1)
# [1 1]
 
code2 = tile((1,2,3),3)
print(code2)
# [1 2 3 1 2 3 1 2 3]
 
a = [1,3,4]
code3 = tile(a,[2,3])
print(code3)
'''
[[1 3 4 1 3 4 1 3 4]
 [1 3 4 1 3 4 1 3 4]]
 '''

Numpy  范数的用法

顾名思义,linalg = linear + algebralinalg = linear + algebra , norm则表示范数,首先需要注意的是范数是对向量(或者矩阵)的度量,是一个标量(scalar):

np.linalg.norm(求范数):linalg=linear(线性)+algebra(代数)

首先:help(np.linalg.norm) 查看其文档:

norm(x, ord=None, axis=None, keepdims=False)

这里我们只对常用设置进行说明,x表示要度量的向量,ord表示范数的种类,axis表示向量的计算方向,keepdims表示设置是否保持维度不变。

Python numpy中矩阵的基本用法汇总

用法:

import numpy as np
 
a=np.array([[complex(1,-1),3],[2,complex(1,1)]]) 
print(a)
 
 
print(np.linalg.norm(a,ord=2) ) #计算矩阵2的范数
 
 
print(np.linalg.norm(a,ord=1) ) #计算矩阵1的范数
 
 
print(np.linalg.norm(a,ord=np.inf) ) #计算矩阵无穷的范数

示例:

import numpy as np
x = np.array([5,7])
np.linalg.norm(x)
8.602325267042627
np.linalg.norm(x,ord=2)
8.602325267042627
np.linalg.norm(x,ord=1)
12.0
np.linalg.norm(x,ord=np.inf)
7.0

范数理论告诉我们,一范数 >=  二范数  >=  无穷范数

参考文献:https://3water.com/article/124939.htm

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
简单谈谈Python中的闭包
Nov 30 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
Feb 16 Python
浅谈用Python实现一个大数据搜索引擎
Nov 28 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
Python DataFrame.groupby()聚合函数,分组级运算
Sep 18 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
Python叠加两幅栅格图像的实现方法
Jul 05 Python
python time.sleep()是睡眠线程还是进程
Jul 09 Python
Pycharm如何运行.py文件的方法步骤
Mar 03 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
python opencv肤色检测的实现示例
Dec 21 Python
python读取csv和txt数据转换成向量的实例
Feb 12 #Python
python 读取文件并把矩阵转成numpy的两种方法
Feb 12 #Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
Feb 12 #Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 #Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 #Python
python将pandas datarame保存为txt文件的实例
Feb 12 #Python
对Python 多线程统计所有csv文件的行数方法详解
Feb 12 #Python
You might like
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
js window.event对象详尽解析
2009/02/17 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
2011/07/31 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
vue cli3.0结合echarts3.0与地图的使用方法示例
2019/03/26 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
Nuxt v-bind绑定img src不显示的解决
2019/12/05 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
Python 代码性能优化技巧分享
2012/08/07 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
Python实现识别手写数字大纲
2018/01/29 Python
python爬取m3u8连接的视频
2018/02/28 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
django如何通过类视图使用装饰器
2019/07/24 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
python实现扫雷小游戏
2020/04/24 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
伦敦一卡通:The London Pass
2018/11/30 全球购物
UML设计模式笔试题
2014/06/07 面试题
大学生职业生涯规划书模板
2014/01/03 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
消防演习通知
2015/04/25 职场文书
二十年同学聚会感言
2015/07/30 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书