numpy数据结构 科学计算库

1.numpy的调用
import numpy
vector = numpy.array([5,10,15,20,30])  #创建向量
matrix = numpy.array([[1,2,3],[4,5,6],[2,6,5]])#创建矩阵
print(vector.shape)#查看vector维度
print(vector)
print(matrix.shape) #查看matrix维度
vector.dtype   #查看类型

2.文件的读取(新建一个zzw.txt文件  里面写入一些数据)

world = numpy.genfromtxt('zzw.txt',delimiter=',',skip_header=1,dtype=str)  #跳过第一行
numpy.genfromtxt('zzw.txt',delimiter=',',skip_header=1,dtype=str)  #全部读取
print(world)
#读取从0开始的2个元素
donkey = numpy.array([5,4,8])
print(donkey[0:2])
#矩阵的操作
matrix = numpy.array([[5,10,15],
                      [20,25,30],
                      [35,40,45]]) 
print(matrix[1:3,1:3])

#判断表中是否有为5的值array([ True, False, False])
zhan1 = numpy.array([5,4,8])
zhan1 == 5
#numpy的操作
zhan1 = numpy.array([5,4,8])
zhan2 = (zhan1==5)
print(zhan2)
print(zhan1[zhan2])

#且操作
zhan1 = numpy.array([5,4,8])
zhan2 = (zhan1  == 4) & (zhan1==8)
print(zhan2)
#或操作
zhan1 = numpy.array([5,4,8])
zhan2 = (zhan1  == 4) | (zhan1==8)
print(zhan2)
#将4和8的值改为10
zhan1 = numpy.array([5,4,8])
zhan2 = (zhan1  == 4) | (zhan1==8)
zhan1[zhan2] = 10
print(zhan1)
#求最小值
zhan1 = numpy.array([5,4,8]) 
zhan1.min()
#求最大值
donkey= numpy.array([5,4,8])
donkey.max()
#矩阵行求和
matrix = numpy.array([[1,2,3],[,4,5,6],[7,8,9]])
matrix.sum(axis=1)
#矩阵列求和
matrix = numpy.array([[1,2,3],[4,5,6],[7,8,9]])
matrix.sum(axis=0)
import numpy as np
print(np.arange(15))  #生成0-14的向量
a = np.arange(15).reshape(3,5)#生成3*5的矩阵
a
a.shape   #查看a的维度
np.zeros((3,5))  #生成3*5的矩阵,值都为0
np.ones((2,3,4),dtype = np.int32)#生成2个3*4的举证值都为int型1
#生成10开始30截止,间隔5的向量。不包含30.
np.arange(10,30,5)
#随机生成2*3的矩阵
np.random.random((2,3))
#0-2*pi之间随机取100个值
from numpy import pi
np.linspace(0,2*pi,100)            
3.矩阵之间的操作
a = np.array([10,20,30])
b = np.arange(3)
c = a-b#矩阵的减法
c = c**2 #矩阵中所有值求2次幂

c = a*b  #求向量积
c = a.dot(b) #求点积

#其它运算
a= np.arange(3)
print(a)
print(np.exp(a)) #e平方
print(np.sqrt(a)) #开方

a = np.floor(10*np.random.random((3,4)))    #floor向下取整
print(a)
print(a.ravel())   #变为向量
a.shape = (6,2)  #修改矩阵维度
print(a)
print(a.T)  #求转置
a = np.floor(10*np.random.random((3,4)))
b = np.floor(10*np.random.random((3,4)))
print(np.vstack((a,b)))  #a,b矩阵列衔接
print(np.hstack((a,b)))  #a,b矩阵行衔接

#按照列切分3份
a = np.floor(10*np.random.random((2,12)))
print(np.hsplit(a,3)) 
#按照列切分3,4列
a = np.floor(10*np.random.random((2,12)))
print(np.hsplit(a,(3,4)))  

 #按照行切分  
a = np.floor(10*np.random.random((2,12)))
print(np.vsplit(a,2))   
     

4.矩阵的复制
a = np.arange(10)  #a和b完全相同指向同一块内存
b = a
b.shape = (2,5)
print(a.shape)
print(id(a))
print(id(b))

a = np.arange(10)   #a和b不完全相同,指向不同的id,但是修改b会同样修改a
b = a.view()
b.shape=(5,2)
print(a.shape)
print(b.shape)
b[0,0] = 1254
print(a)
print(b)
print(id(a))
print(id(b))

a = np.arange(10)  #a和b没有关联
b = a.copy()
b.shape=(5,2)
print(a.shape)
print(b.shape)
b[0,0] = 1254
print(a)
print(b)
print(id(a))
print(id(b))
5.矩阵的链接生成
a = np.array([1,2,3])
b = np.tile(a,(3,5))
print(b)

结果为:自己去理解

[[1 2 3 1 2 3 1 2 3 1 2 3 1 2 3]
 [1 2 3 1 2 3 1 2 3 1 2 3 1 2 3]
 [1 2 3 1 2 3 1 2 3 1 2 3 1 2 3]]

6.排序
a = np.array([[6,2,3],[2,6,4]])     #行排序
b = np.sort(a,axis=1)
print(b)


猜你喜欢

转载自blog.csdn.net/donkey_1993/article/details/79727648