# -*- coding: UTF-8 -*- import numpy as np from pylab import * from numpy.linalg import * a = np.arange(20).reshape(4,5) #arange创建以为数组,reshape可以修改数组的形状。 reshape(4,5)则可以把一维数组改为一个4行5列的数组 print(a) print(a.dtype)#array.dtype可以显示数组的数据类型 print(a.ndim)#farray.ndim显示数组的轴数,即数组的秩 print(a.shape)#显示数组的形状,几行几列 print(a.itemsize)#数组中每个元素的字节大小 print(a.data)#包含实际数组元素的缓冲区,通常我们不需要使用这个属性,因为我们总是通过索引来使用数组中的元素。 print(type(a))#可以用type(a)来查看对象的属性 #接下来创建数组 #1:用array函数来创建数组 a=np.array([2,3,4]) print(a) print(a.dtype)#查看每个数数字的类型 int32 b=np.array([1.2,4.5,9.9]) print(b) print(b.dtype)#float64 a= np.array([(1.3,4,5),(4,5,6)]) print(a) c = np.array([[1,2],[3,4]],dtype = complex)#在创建数组的时候 用dtype指定数据类型 print(c) a = np.zeros([3,4])#zeros函数创建一个全为0的数组 print(a) b=np.ones([2,2])#ones()可以创建一个全为1的数组 print(b) c=np.empty([3,3])#empty创建一个随机的数组 print(c) d=np.arange(10,100,10)#arange函数可以用来创建数列,但是返回的是一个一维数组 print(d) a= np.array([[20,30,40,50],[20,30,40,50]]) b=np.array([[0,1,2,3],[0,1,2,3]]) print(a) print(b) print(a-b)#数组的加减乘除 只是维度相等的数组上每个位置上的数字加减乘除 print(a+b) print(a*b) #若是要算矩阵乘法,则需要dot函数 a=np.array([[1,2],[3,4]]) b=np.array([[3,4],[5,6]]) print(a) print(b) print(np.dot(a,b)) a= np.arange(12).reshape(3,4) print(a) print(a.sum(axis=0)) #指定axis参数可以把运算应用到数组指定的轴上,比如a.sum(axis=0)就是将每列的数据相加 print(a.sum(axis=1))#对每列相加 print(a.min(axis=0))#求每列的最小值 print(a.cumsum(axis=1))#行方向迭代 print(a.cumsum(axis=0))#列方向迭代 b=np.arange(3) print(b) print(np.exp(b)) print(np.sqrt(b)) c=np.array([1,-1,3]) print(np.add(b,c)) a=np.arange(10)**3 print(a) print(a[2]) print(a[2:5]) a[:6:2]=1000 #从开始到第六个数,每2个数中的第二个变成1000 print(a) print(a[6]) print(a[::-1])#反转一维数组,这么神奇,第一次见 for i in a : print(i**3) def f(x,y): return 10*x+y b = np.fromfunction(f,(5,4),dtype=int)#fromfunction创建的是函数的数组,具体这么来理解。第一个参数是函数,第二个参数是数组的shape,即几行几列。第一行元素则是将(0,0),(0,1),(0,2),(0,3),第二行(1,0),(1,1),(1,2),(1,3) print(b) print(b[2,3]) print(b[0:5,1]) print(b[1:5])#python里的数组是左闭右开的一个区间 比如[1:5] 是>=1 <5 print(b[1:4,1]) print(b[-1]) for element in b.flat:# array.flag属性,可以将多维数据中的元素一一的列举出来,当然也可以对元素进行计算 print(element) #数组的形状shape a=np.arange(10).reshape(2,5) print(a) print(a.ravel()) #array.ravel()函数可以将数组中的元素一一展开,变成一维数组 a.shape=(5,2)#shape函数改变数组的形状 print(a) a.transpose() print(a) a=np.array([[1,2],[3,4]]) b=np.array([[5,6],[7,8]]) print(a) print(b) print(vstack((a,b)))#vstack纵向合并数组 print(hstack((a,b)))#hstack横向合并数组 print(column_stack((a,b)))#将数组进行列方向合并 print(row_stack((a,b)))#将数组进行行方向合并 #通过数组索引数组 a=np.arange(12)**2 #被索引的数组 print(a) b=np.array([1,1,3,8,5])#索引数组 print(a[b]) #a[b]则是用b数组去索引a数组 c=np.array([[3,4],[5,6]])#索引数组也可以是二维的,这样生成的数组也是二维的 print(a[c]) #通过bool来索引数组 a=np.arange(12).reshape(3,4) b=a>4 print(b) print(a[b]) a[b]=0 print(a) #矩阵介绍 A= matrix('1.0 2.0;3.0 4.0') print(A) print(type(A)) print (A.T) #A.T矩阵的转至 即矩阵的变化,行列变换 X=matrix('5.0 7.0') Y=X.T print(Y)#矩阵X的转至 print(A*Y) print(solve(A,Y))