笔记,数据(2)

参考:《Python科学计算》

 

一些常识性的程序片段:

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x=np.arange(10,1,-1)
print(x[[3,3,1,5,4,-3,4,-2]].reshape(2,4))
y=x[np.array([[2,4,3],[3,5,-2]])]
print(y[1][2],y[(1,2)],y[1,2]) #几种常用的多维数组的选取方式
print(x>5)
xs=slice(None,None,2)  #用于创建下标
print(x[xs],x[np.s_[::2]]) #效果相同
print(np.random.randint(1,10,10)) #常用的随机数组

q=np.arange(0,36,1).reshape(6,6)
mask=np.array([1,0,1,0,0,1],dtype=np.bool) #这里引申布尔数,0,1型判断,只有明确定义数据类型才能进行判别选取,不然以常数处理
#make1=[True,False,True,False,True]
print(q[mask,2])#,q[make1,2])

ptype=np.dtype({'names':['name','age','weight'], 'formats':['S16','i','f']},align=True)#注意这里的复数(s),不然会报错
a=np.array([('Zhang',32,54.3),("zhao",22,50.9)],dtype=ptype) #结构数组的建立和使用,类似字典
print(a[0]["name"].decode("utf-8"), a[0]["name"]) #输出的b表示是BYTE字符串,转unicode可以用decode("utf-8"),对比如下
#help(np.dtype)

结果:

 

 

同维数组的计算类似单个元素的计算,如下:

 

  

 

 

 

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

a=np.arange(5)
b=np.arange(4,-1,-1)
print(a==b,a>b)
print(any(a==b),all(a>=b))
print(np.logical_xor(a==b,a>b))  #布尔运算使用的and、or、not,xor无法被重载,都以logical_开头
print(~np.arange(5),a)  # and,not,or,xor分别对应 &,~,|,^ ;(xor是异或:如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0)

结果:

 

posted @ 2016-10-25 16:21  CC_python  阅读(72)  评论(0)    收藏  举报