Python各种函数的用法总结

  1. 批量注释,单行注释
    (1)批量注释采用三引号

      '''
       content
      '''
    

    (2)单行注释采用#号

     # content
    
  2. np.hstack和np.vstack用法

     np.vstack:在竖直方向堆叠
     np.hstack:在水平方向平铺
    
    /*example*/
    import numpy as np
    
    arr1=np.array([1,2,3])
    arr2=np.array([4,5,6])
    print np.vstack((arr1,arr2))
    print np.hstack((arr1,arr2))
    
    out:
    [[1 2 3]
     [4 5 6]]
     [1 2 3 4 5 6]
    
  3. np.arange
    创建等差数组。

    1、a = np.arange(6),起点0,终点6,默认步长1
       out:[0 1 2 3 4 5]
    2、a = np.arange(1,5) ,起点1,终点5,步长1
       out:[1 2 3 4]
    3、a = np.arange(1,9,2),起点1,终点9,步长2
       out:[1 3 5 7]
    
  4. np.random.shuffle(x)和np.random.permutation(x)
    (1)np.random.shuffle(x),对给定的数组重新排列,无返回值,原数组会因此而改变。
    (2)np.random.permutation(x),对给定的数组重新排列,原数组本质不会被改变,返回新的数组。

  5. [:]和[::]的用法(属于通用序列操作)

     x[i:j],角标取值从i到j,默认步长1
     x[i:j:k],角标取值从i到j,步长为k
    
  6. numpy.random.uniform(low,high,size)

    定义:从一个均匀分布[low,high)中随机采样size个样本,输出样本类型为int或元组(tuple)。
    
  7. np.linalg.norm

    	np.linalg.norm(x, ord=None, axis=None, keepdims=False)
    	/**/
    	ord = None      ,二范数 (默认)
    	ord = 2         ,二范数
    	ord = 1         ,一范数
    	ord = np.inf    ,无穷范数
    	/**/
    	axis = None     ,求整个矩阵的范数
    	axis = 0        ,按列向量来进行处理,求多个列向量的范数
    	axis = 1        ,按行向量来进行处理,求多个行向量的范数
    	/**/
    	keepdims,  True表示保持矩阵的二位特性,False表示不保持,默认为False
    
  8. np.dot(a,b)
    (1)当a和b是np.ndarray类型的一维向量时,np.dot(a,b)表示向量点积,返回值一个常量。

    	import numpy as np
    	 
    	a = np.array([1, 2, 3])
    	b = np.array([2, 3, 4])
    	print(np.dot(a, b))
    	
    	output: 20
    
    (2)当a和b是np.ndarray类型的二维矩阵时,np.dot(a,b)表示矩阵乘法,返回值一个矩阵。
    
    	import numpy as np
    	 
    	a = np.random.randint(0, 3, size = (3, 3))
    	b = np.random.randint(0, 3, size = (3, 2))
    	print(np.dot(a, b))
    	 
    	output:
    		[[ 5   1]
    		 [ 2   4]
    		 [ 4   5]]
    
  9. __repr__
    直接打印类的实例化对象,对于自定义的类,我们需要单独重写对__repr__的定义。

    class Person():
       def __init__(self,name,age):
           self.name = name
           self.age = age
       def __repr__(self):
           return 'Person类,包含name='+self.name+'和age='+str(self.age)+'两个实例属性'
           
    person = Person('Lily',22)
    

print(person) # Person类,包含name=吕星辰和age=20两个实例属性
12. numpy.concatenate
实现数组拼接

	   a=np.array([[1,2,3],[4,5,6]])
	   b=np.array([[0,2,3],[6,8,7]])
	   np.concatenate((a,b),axis=0)  # axis=0,为按列拼接
		array([[ 1,  2,  3],
		       [ 4,  5,  6],
		       [0, 2 , 3],
		       [ 6,  7,  8]])
		np.concatenate((a,b),axis=1)  #axis=1,为按行拼接
		array([[ 1,  2,  3, 11, 21, 31],
		       [ 4,  5,  6,  7,  8,  9]])
  1. numpy.unique

       numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None)
       
       用法:找出数组独一无二的部分,去掉重复值。
       
       ar:输入数组。
       return_index:  True表示会返回被提取元素在原始数组中的索引值。
       return_inverse:True表示会返回元素位于生成数组的索引值。
       return_counts: True表示会同时每个元素在原始数组中出现的次数。
       axis:有返回值,返回一个排好序列的独一无二的数组。
    
  2. Python3报错问题:UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0x90 in position 614: ordinal not in
    错误地方:报错地方是使用mnist_loader的数据集,导入时的报错。
    解决办法:python3不再使用cPickle,而是使用pickle;导入时需要添加encoding=‘bytes’。

    import pickle  或 import _pickle as cPickle
    train, val, test = pickle.load(f, encoding=‘bytes’)
    

你可能感兴趣的:(python,numpy,机器学习)