# encoding:utf-8
import numpy as np
data1 = [1,2,3,4,5.6,7,8.9]
arr1 = np.array(data1)
print arr1
data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)
print arr2
#array.ndim 看维数
print arr1.ndim
print arr2.ndim
#array.shap 看矩阵几行几列
print arr1.shape
print arr2.shape
#创建指定长度或矩阵全0数组
print np.zeros(10)
print np.zeros((3,6))
#创建指定长度或矩阵全1数组
print np.ones(10)
print np.ones((2,4))
#返回一些垃圾值
print np.empty((1,2,2))
#numpy内置range函数
print np.arange(10)
#创建NxN的单位矩阵
print np.eye(3)
#bool 型索引
names = np.array(['Bob','Joe','Will','Bob'])
#这个运算将产生bool型数组
#names == 'Bob'
arr = np.empty((8,4))
print arr
#选出的是4,5,0,1行
print arr[[4,5,0,1]]
#3行5列的矩阵
nn = np.arange(15).reshape([3,5])
print nn
import matplotlib.pyplot as plt
points = np.arange(-5,5,0.01)
#接受2个一维数组,产生2个二维矩阵
xx,yy = np.meshgrid(points,points)
z = np.sqrt(xx**2+yy**2)
#plt.imshow(z,cmap=plt.cm.gray);plt.colorbar()
#plt.title('image plot of $\sqrt{x^2+y^2}$ for a grid of values')
#plt.show()
#numpy.where() 三元表达式
x = np.array([1.1,1.2,1.3,1.4,1.5])
y = np.array([2.1,2.2,2.3,2.4,2.5])
c = np.array([True,False,True,True,False])
#c 里面为true选择x的,为false选择y的
re = np.where(c,x,y)
print re
arr = np.empty((4,4))
print np.where(arr > 0,2,-2)
bools = np.array([False,False,True,False])
#any检查数组中的值有一个或多个true,all,检查数组中的值都为true
print bools.any()
print bools.all()
a = np.array([1,3,1,2,5,3,2])
#排序
a.sort()
print a
#去重排序
print np.unique(a)
#一个数组中的值在另一个数组中的成员资格
print np.in1d(a,[1,4,5,8])
#保存文件格式默认.npy
ar = np.arange(10)
np.save('som',ar)
print np.load('som.npy')
#压缩保存文件
np.savez('ss',a=ar,b=arr)
tt = np.load('ss.npz')
print tt['b']