numpy
基本性质:
import numpy as np
'''numpy 属性'''
array = np.array([[1,2,3],
[2,3,4]])
print(array)
print('number of dim:',array.ndim) #维度
print('shape:',array.shape) #行列
print('size:',array.size) #大小
'''numpy 创建array'''
a = np.array([2,23,4],dtype=np.int)
b = np.array([2,23,4],dtype=np.float)
print(a.dtype)
print(b.dtype)
a = np.zeros((3,4),dtype=np.int)
print(a)
a = np.empty((3,4))
print(a)
a = np.arange(10,20,2)
b = np.arange(12).reshape((3,4))
print(b)
print(a)
a = np.linspace(1,10,5) #生成线段
a = np.linspace(1,10,6).reshape((2,3))
print(a)
'''numpy 基础运算'''
a = np.array([10,20,30,40])
b = np.arange(4)
print(a,b)
c = a+b
d = b**2
c = np.sin(a)
print(c)
print(d)
print(b<3)
a = np.array([[1,1],
[0,1]])
b = np.arange(4).reshape((2,2))
print(a)
print(b)
c=a*b
c_dot = np.dot(a,b)
c_dot2 = a.dot(b)
print(c)
print(c_dot)
print(c_dot2)
a = np.random.random((2,4))
print(a)
print(np.sum(a))
print(np.sum(a,axis=1)) #axis=1行 axis=0列
print(np.sum(a,axis=0))
print(np.min(a))
print(np.max(a))
A = np.arange(14,2,-1).reshape((3,4))
print(np.argmin(A)) #最小值的索引
print(np.argmax(A))
print(A)
print(A.mean()) #算平均值
print(np.mean(A)) #也可average
print(np.median(A)) #中位数
print(np.cumsum(A)) #前N项和
print(np.diff(A)) #每个项与前一项的差构成的矩阵,比原矩阵每行少一个元素
print(np.nonzero(A))
print(np.sort(A)) #逐行排序
print(np.transpose(A)) #矩阵转置
print((A.T)) #矩阵转置
print(np.clip(A,5,9)) #所有小于5的数变成5,所有大于9的数变成9
print(np.mean(A,axis=0)) #axis=0列计算
print(np.mean(A,axis=1)) #axis=1行计算
'''numpy 索引'''
A = np.arange(3,15).reshape((3,4))
print(A)
print(A[2,1]) #索引行列
print(A[2][1])
print(A[2,:]) #:代表所有数
print(A[1,1:3])
for row in A: #迭代A的行
print(row)
print(A.flatten()) #铺平
for item in A.flat:
print(item)
'''numpy 的array合并'''
A = np.array([1,1,1])
B = np.array([2,2,2])
C = np.vstack((A,B)) #vertical stack
D = np.hstack((A,B)) #horizontal stack
print(C)
print(D)
print(A.shape,C.shape,D.shape)
print(A[np.newaxis,:].shape)
print(A[:,np.newaxis]) #单横变单纵,因为T无法使其转置
A = np.array([1,1,1])[:,np.newaxis]
B = np.array([2,2,2])[:,np.newaxis]
print(np.hstack((A,A,B)))
C = np.concatenate((A,B,B,A),axis=0) #纵向合并成多行
print(C)
C = np.concatenate((A,B,B,A),axis=1) #横向合并成多列
print(C)
'''numpy的array分割'''
A = np.arange(12).reshape((3,4))
print(A)
print(np.split(A,2,axis=1)) #axis=1表示行,切割行,分成多列
print(np.split(A,3,axis=0)) #axis=0表示列,切割列,分成多行
print(np.array_split(A,3,axis=1)) #不等项分割
print(np.vsplit(A,3)) #纵向
print(np.hsplit(A,2)) #横向
'''copy 和 deep copy'''
a = np.arange(4)
b = a
c = a
d = b
a[0] = 11
print(b is a,d is a) #True True
d[1:3] = [22,33]
print(b is a,d is a) #True True
b = a.copy()
a[3]=44
print(b is a) #False
random函数
随机浮点数
random.uniform()
用于生成指定范围内的浮点数,两个参数,一个是上限,一下是下限
import random
a = random.uniform(2,10)
print a
random.random()
生成一个0到1之间的随机浮点数,包括0但不包括1,也就是[0.0, 1.0)。
import random
a = random.random()
print a
随机整数
random.randint()
用于选取指定范围内的整数;
a = random.randint(10,80)
print a
随机选取0—100之间的随机偶数
random.randrange(0,100,2)
随机字符
random.choice()
随机选取字符串,在使用过程中要讲字符串加入到列表中使用
用于随机选取指定字符串中的字符
a = random.choice(['one','two','three','four'])
print a
a = random.choice('qwertyuiop')
print a
随机打乱
import random
a = [1,5,7,8,7,6,4,2,3,7,6]
random.shuffle(a)
print a
正态分布
np.random.normal()
numpy.random.normal(loc=0,scale=1e-2,size=shape)
参数loc(float):正态分布的均值,对应着这个分布的中心。loc=0说明这一个以Y轴为对称轴的正态分布,
参数scale(float):正态分布的标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦。
参数size(int 或者整数元组):输出的值赋在shape里,默认为None。