python之numpy之数组基本操作

一、数据转置

t = np.arange(18).reshape(3,6)
print(t)
print(t.transpose())#转置命令
print(t.swapaxes(1,0))
print(t.T)

二、数据切片与索引

#numpy的索引与切片
print(t[1]) #第一行
print(t[:,2])#第二列
print(t[1:2]) #第一二行
print(t[:,2:3])#第2.3列
print(t[1,2])# 第1行,2列的数

三、修改数值

#修改数组的数值
t[:,2:3] = 1 #第2列
print(t)
#对t中元素进行布尔索引
print(t<11)
#将t中小于10的数字,全部替换为1
t[t<10]=1
print(t)

四、三元运算符与clip裁剪

#numpy中的三元运算符号
t= np.arange(24).reshape(4,6)
print(t)
np.where(t<10,0,10) #小于10为10,其他均为10


#numpy中的clip(裁剪)
print(t)
print(t.clip(15,18)) #小于15的,全部修改为15,大于18的全部修改为18

五、数据类型简介及注意事项

#numpy中的NAN与inf简介
#NAN:不是一个数字
#inf:表示无穷
#如何表示NAN与inf,均为浮点型
a=np.inf
print(type(a))
a1 = np.nan
print(type(a1))

#nan中的注意问题
# 1.两个nan不等
print(np.nan == np.nan)
print(np.nan!=np.nan)
#利用nan的性质,判断数组中nan的个数
t = np.array([1,2,np.nan])
print(np.count_nonzero(t!=t))
#把t中的nan项替换为0值,nan与任何值计算都是nan.
t[np.isnan(t)]= 0
print(t)
#全部替换为0后,替换之前的平均值如果大于0,替换之后的均值肯定会变小,
#所以更一般的方式是把缺失的数值替换为均值(中值)或者是直接删除有缺失值的一行

六、常用统计函数

numpy的常用的统计函数 求和:t.sum(axis=None) 均值:t.mean(a,axis=None)  受离群点的影响较大 中值:np.median(t,axis=None)  最大值:t.max(axis=None)  最小值:t.min(axis=None) 极值:np.ptp(t,axis=None) 即最大值和最小值只差 标准差:t.std(axis=None)当指定axis时候,返回对应维度上的数值

七、数据拼接,行列交换

#数组的内接与拼接,相同维度。数据拼接时,需要保持系列间的含义
import numpy as np
t1 = np.arange(10).reshape(2,5)
t2 = np.arange(10,20).reshape(2,5)
#竖直拼接
t3 = np.vstack((t1,t2))
print(t3)
#水平拼接
t4 = np.hstack((t1,t2))
print(t4)

#数组的行列交换
t = np.arange(12,24).reshape(3,4)
#行交换
t[[1,2],:] = t[[2,1],:]
print(t)

#数组列交换
t[:,[1,3]] = t[:,[3,1]]
print(t)

#numpy其他好用的方法
#获得最大值,最小值位置
a = np.arange(10).reshape(2,5)
print(a)
print(np.argmax(a,axis=0))
print(np.argmin(a,axis=1))
#创立一个全为0的数组
print(np.zeros((3,4)))
#创建一个全为1的数组
print(np.ones((3,4)))
#创建一个对角线为1的正方形数组
print(np.eye(3))

#numpy中的注意事项
# a=b 完全不复制,a和b相互影响
# a = b[:],视图的操作,一种切片,会创建新的对象a,但是a的数据完全由b保管,他们两个的数据变化是一致的,
# a = b.copy(),复制,a和b互不影响

 

posted @ 2020-11-02 19:19  上虞牧之  阅读(311)  评论(0)    收藏  举报