######创建array
import numpy as np
np.array([1,2,3])
np.array([0]*10)
a = np.zeros(10)
a.dtype
a = np.zeros(10,dtype = 'int')
a = np.ones(10)
a = np.empty(100)
a
#包前不包后
np.arange(2,10,3)
np.arange(2,10,0.3)
#arange的第三个参数为步长,linspace的第三个参数为份数
#包钱包后
a = np.linspace(0,100,101)
a.size
#结果为101
x = np.linspace(-10,10,10000)
x
y = x**2
import matplotlib.pyplot as plt
plt.plot(x,y)
plt.show()
#对角矩阵
np.eye(10)
#####array索引和切片
a = np.arange(10)
a
a+1
a*3
3/a
b = np.arange(10,20)
b
#大小一样就可以做运算
a+b
a<b
a = np.arange(15).reshape((3,5))
np.arange(15).shape
a[0][0]
a[1,0]
a = np.arange(15)
#切片,顾头不顾尾
a[0:4]
a[:4]
a[4:]
b=list(range(10))
b
a=np.arange(10)
a
#切片时相当于视图,引用,并没有重新定义,指向a,
#视图是浅拷贝
c = a[0:4]
#列表是深拷贝
d = b[0:4]
c[0]=20
d[0]=20
a
b
a = np.arange(15).reshape((3,5))
a
a[0:2][0:2]
a[0:2]
a[0:2,0:2]
######array布尔型索引
import random
a = [random.randint(0,10) for i in range(20)]
a
list(filter(lambda x:x>5,a))
a = np.array(a)
a
a[a>5]
a = np.arange(4)
a[[True,False,False,True]]
a = [random.randint(0,10) for i in range(20)]
a
a = np.array(a)
a
b = a[a>5]
b[b%2==0]
# & 位运算符
a[a>5 & a%2==0] #错误
a[(a>5) & (a%2==0)] #可以重写&,但不能重写and
a[(a>5) | (a%2==0)]
#########花式索引
a = np.arange(20)
a[[1,2,3,5]]
a = np.arange(20).reshape((4,5))
a
a[0,2:4]
a[0,a[0]>2]
a[[1,3],[1,3]]
a[[1,3],[1,4]]
#先切行,再切列,
#先切第一行到第三行,列全切。列中行全切,在切第一列到第三列
a[[1,3],:][:,[1,3]]
############array通用函数
abs(-1)
a = np.arange(-5,5)
abs(a)
np.abs(a)
np.sqrt(a)
#exp---指数
#log---对数
a = 1.6
int(a) #1
round(a) #2 #四舍五入
a=-1.6
int(a) #-1
round(a) #-2
import math
#向上取整
math.ceil(1.6) #2
math.ceil(-1.6) #-1
#向下取整
math.floor(-1.6) #-2
a = np.arange(-5.5,5.5)
np.floor(a)
np.ceil(a)
np.round(a)
#向0取证
np.trunc(a)
np.rint(a) #与round相同
np.modf(a) #整数与小数分开
x,y = np.modf(a)
x
y
a = np.arange(0,5)
5/a
#nan:不等于任何浮点数,甚至 nan != nan
#inf:比任何浮点数都大
float('3.5')
float('nan')
float('inf')
np.nan == np.nan
np.isnan(5/a)
a[~(np.isnan(a))]
float('inf') > 100000000000 #比任何数都大
a = np.array([1,2,3,4,5])
b = np.array([1,0,3,0,5])
c = a/b
np.inf == np.inf
c[c!=np.inf]
c[~np.isinf(c)]
b=np.array([3,0,5,0,7])
a
np.maximum(a,b)
np.minimum(a,b)
###############统计方法和随机数生成
#方差:表示整数数据的离散程度,方差越小,离散程度越小
#标准差:方差开根号,
a = np.arange(0,10,0.2)
a.mean()
a.std()
a.var()
#可以根据均值加减标准差来估计整个数据的范围
a.mean()+a.std()
a.mean()-a.std()
a.argmax()
a.argmin()
import random
random.random()
random.random(0,10)
random.choice([1,2,3,4,5])
a=[1,2,3,4,5]
random.shuffle(a)
a
np.random.randint(10) #0-1的10个数
np.random.randint(0,10,10) #产生0-10的10个数
np.random.randint(0,10,(3,5)) #产生三行五列的二维数组
np.random.choice([1,2,3,4,5])
np.random.choice([1,2,3,4,5],10)
random.uniform(2.0,4.0) #平均分布
np.random.uniform(2.0,4.0,10)