import numpy as np
data = np.array([[1,2,3],[4,5,6],[7,8,9]])
#等价于data=np.arange(1,10).reshape(3,3)
#即创造一个3*3,从1排序到10的矩阵
print(data)
print("\n查询几行几列:{}".format(data.shape))
print("\n查询数组类型:{}".format(data.dtype))
print("\n查询几维数据:{}".format(data.ndim))
print("\n数值转置:\n{}".format(data.T))
ndata=data.astype(float) #拷贝数值的float类型
print("\n查询数组类型:{}\n".format(ndata.dtype))
#不同规格的数组一起计算的话会报错,同行或者同列依旧能计算
data2=np.array([[1,2,3]])
data3=np.array([[1],[2],[3]])
print("同行结果:\n{}".format(eval("data+data2")))
print("同列结果:\n{}\n".format(eval('data+data3')))
#切片教程
print("沿着行(axis=0)进行索引\n{}".format(data[:2]))
print("先沿着行(axis=0)进行索引,再沿着列(axis=1)进行索引\n{}".format(data[:2,:2]))
print("下标是从0开始\n{}\n".format(data[1,0:2]))
#注意赋值过程会起传递作用,即赋值完的数据发生更改,原来的数组也会发生更改
#所以一般用copy()的方法进行拷贝
print("用copy拷贝data的首行数据\n{}\n".format(data[0].copy()))
#数组的布尔索引
print("数组中是否存在一个或多个true: {}".format(data.any()))
print("数组中是否全部数都是true: {}".format(data.all()))
print("多少个元素大于5:{}个".format((data>5).sum()))
print("哪些元素大于5: {}".format(data[data>5]))
print("元素是否大于5:\n{}".format(data>5))
print("大于5的标记未1,小的标记为0\n{}".format(np.where(data>5,1,0)))
print("\n求特征向量均值:\n{}".format(data.mean()))
print("沿行进行索引,求出行均值:\n{}\n".format(data.mean(axis=0)))
#求列均值可以通过转置后再求行均值得出
print("沿着行进行索引,累加\n{}".format(data.cumsum(0)))
print("沿着行进行索引,累乘\n{}\n".format(data.cumsum(1)))
#数据排序操作
data=np.random.randn(4,4)
data.sort(0) #沿行索引,进行升序排序
print(data)
print(data[::-1]) #降序操作
#同理利用转置后可得列向量得排序
#矩阵计算
x=np.arange(9).reshape(3,3)
print("\n矩阵相乘:\n{}".format(np.dot(x,x)))
print("矩阵转置\n{}\n".format(x.T))
#数据读取和保存
np.save('name',data) #保存为2进制文件
np.load('name.npy') #读取2进制文件
#np.loadtxt(filepath,delimiter,usecols,unpack)
#filepath为文件名,delimiter为剔除符,
#usecols为索引参数,
np.savetxt('1',data) #保存为txt文本
np.loadtxt('1') #读取txt文本
#读取csv文件,需要类型转换为str
print(np.loadtxt('test.csv',str,delimiter=","))
#读取数据型csv文件,不是数值则输出nan
print(np.genfromtxt('test.csv',delimiter=','))
numpy第二天
最新推荐文章于 2022-09-06 16:35:06 发布