目录:


1、数组
import numpy as np
t1=np.arange(0,24).reshape(4,6);print(t1)
t2=np.arange(0,6);print(t2)
t=t1-t2
print(t)
t.shape
####################
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]
[0 1 2 3 4 5]
[[ 0 0 0 0 0 0]
[ 6 6 6 6 6 6]
[12 12 12 12 12 12]
[18 18 18 18 18 18]]
(4, 6)
2、读取数据
#读取文件
import numpy as np
data=np.loadtxt(frame,dtype=np.float,delimiter=",",skiprows=0,usercols=None,unpack=False)
#转置
t2=np.arange(24).reshape((4,6))
t2.T
t2.transpose()
3、创建数组
import numpy as np
#使用numpy 生成数组,得到 numpy.ndarray类型
a=np.array([1,2,3])
b=np.array(range(10))
c=np.arange(10)
d=np.arange(4,10,2)
print(a)
print(b)
print(c)
print(d)
# 类型
print(type(d)) #数组类型
print(d.dtype) #数组中元素类型
t4=np.array(range(1,4),dtype=float)
print(t4)
print(t4.dtype)
t5=np.array([1,1,0,0],dtype=bool)
print(t5)
print(t5.dtype)
#调整数据类型
t6=t5.astype("int8")
print(t6.dtype)
#生成10个随机数
import random
t7=np.array([random.random() for i in range(10)])
print(t7)
print(t7.dtype)
#保留几位小数
t8=np.round(t7,2)
print(t8)
4、索引与切片
import numpy as np
t=np.array(range(20)).reshape(4,5)
print(t)
print(t[1,:]) #取行
print(t[1:,:]) #取连续的多行
print(t[[0,2],:]) #取不连续的多行
print(t[:,2]) #取列
print(t[:,1:4]) #取连续的多列
print(t[:,[1,3]]) #取不连续多列
print(t[2,4]) #取3 行4列值
print(t[1:2,1:2]) #取出相邻点
print(t[0,2,2],[0,1,3]) #取出不相邻点(0,0,),(2,1),(2,3)
5、修改值
import numpy as np
t=np.array(range(20)).reshape(4,5);t1=t
print(t)
#数值的修改
t[:,2:4]=0;
print(t);print(t1)
#布尔索引
t1[t1<10]=3 #将小于10 的数字,替换成3
#三元运算符
d=np.where(t<=10,0,20) #小于10替换成0,其他替换成20
d
y=np.clip(10,18) #小于10,替换成10。大于18替换成18
y
6、数组的拼接、行列交换
import numpy as np
t1=np.array(range(12)).reshape(3,4)
t2=np.arange(8,32,2).reshape(3,4)
#竖直拼接
np.vstack((t1,t2))
#水平拼接
np.hstack((t1,t2))
# 行顺序交换
t1[[1,2],:]=t1[[2,1],:]
t1
#列顺序交换
t2[:,[1,2]]=t2[:,[2,1]]
t2
7、随机数
###随机数
np.random.seed(10) #随机种子
t=np.random.randint(10,20,(4,5)) ###4行5列 10-20之间数
print(t)
8、nan与 inf
nan:
- 缺失(当读取本地文件为float时,如果缺失就会出现nan)
- 不合适计算:比如无穷大减去无穷小,会出现nan
- 是float数据类型
- 两个nan不相等
- nan与任何值计算,均为nan
inf:
- (-inf,+inf)正无穷,负无穷
- 0做除数(python中直接报错,numpy中出现-inf ,+inf)
- 是float数据类型
a=np.nan;type(a) #类型
np.nan==np.nan # #不等性 false
t=np.arange(12).reshape(3,4)
d=t.astype("float");print(d.dtype)
d[:,0]=0 #赋值0
d[2,2]=np.nan;print(d) #赋值nan(由于nan是float型,所以在赋值前需要)
np.count_nonzero(d) #非0个数
np.count_nonzero(d!=d) #nan个数
np.count_nonzero(np.isnan(d)) #nan个数
np.sum(d,axis=1) #nan运算后,仍为nan
9、常用统计函数
#numpy常用统计函数
t=np.arange(12).reshape((3,4)).astype("float")
t[1,2:]=np.nan;print(t)
t.sum(axis=0) #求和
t.std() #标准差
np.median(t) #中位数
#练习:将空值填充为中位数
t=np.arange(12).reshape((3,4)).astype("float")
t[1,2:]=np.nan
def fill_ndarry(data):
for i in range(data.shape[1]):
temp_col=data[:,i]
nan_num=np.count_nonzero(np.isnan(temp_col)) #空值个数
if nan_num!=0:
yy=temp_col[temp_col==temp_col] #不为nan的均值
temp_col[np.isnan(temp_col)]=yy.mean() #赋值
return data
if __name__=="__main__":
print(t)
t=fill_ndarry(t)
print(t)
10、其他
import numpy as np
t=np.array(range(12)).reshape(3,4)
#创建一个全为0的数组-2行3列
np.zeros((2,3))
#创建一个全为1的数组
np.ones((2,3))
#创建一个对角线为1的方阵
np.eye(4)
#获取最大值的位置
np.argmax(t,axis=0)
#获取最小值的位置
np.argmin(t,axis=0)
注意点:
a=b 不能完全复制,ab 互相影响
a=b[:] 两者数据会相互影响
a=b.copy() ab互不影响