php科学计算库,科学计算库Numpy

genfromtxt函数import numpy

tmp = numpy.genfromtxt("1.txt",delimiter=",",dtype=str)

print (type(tmp))

print (tmp)

print (help(numpy.genfromtxt))

genfromtxt函数里串了三个参数,分别是 要打开的文档名称,分隔符,以什么类型存储

打印结果:

973f1de95ac5ec4ba3a8dc91a5a28828.png

第一行输出的是"tmp"这个变量的类型,可以看到是个ndarray矩阵类型,然后下面输出的是矩阵的值,最后输出的是genfromtxt这个函数的帮助文档

array函数import numpy

vector = numpy.array([5,10,15,20])

matrix = numpy.array([[5,10,15],[20,25,30],[35,40,45]])

print (vector)#[ 5 10 15 20]

print (matrix)

#[[ 5 10 15]

# [20 25 30]

# [35 40 45]]

这个太简单不说了

shape变量import numpy

vector1 = numpy.array([[1],[2],[3]])

vector2 = numpy.array([1,2,3])

vector3 = numpy.array([[5,10,15],[20,25,30]])

print (vector1.shape)#(3, 1)

print (vector2.shape)#(3,)

print (vector3.shape)#(2,3)

shape变量就是打印矩阵的维度

取矩阵数据的问题

格式:变量名 = 矩阵名[x,y],需要注意矩阵下标从0开始

格式:变量名 = 矩阵名[x,y$_1$:$y_2$];取矩阵第x行,第$y_1$列到第$y_2$列的数据,不包含$y_2$,下标同样从0开始

格式:变量名 = 矩阵名[:,y],取第y列上的值,同理,[x,:]表示取第x行上的所有值

==运算import numpy

vector = numpy.array([5,10,15,20])

print (vector == 10) #[False True False False]import numpy

vector = numpy.array([5,10,15,20])

equal_to_ten = (vector == 10)

print (vector[equal_to_ten])#[10]

&、|运算

不知道为什么python里面不是两个&,而是一个&,反正只要记住在python里面逻辑与和逻辑或都是一个就行了qwq....import numpy

vector = numpy.array([5,10,15,20])

equal_to_ten_or_five = (vector == 5) | (vector == 10)

print (equal_to_ten_or_five)#[True True False False]

astype函数

astype函数是将矩阵中所有元素的类型变为参数指定的类型import numpy

vector = numpy.array([5,10,15,20])

print (vector.dtype)#int32

vector = vector.astype(str)

print (vector.dtype)#

print (vector)#['5' '10' '15' '20']

min函数import numpy

vector = numpy.array([[5,10,15],

[20,25,30],

[35,40,45]

])

print (vector.min(axis = 1))#[5 20 35]

print (vector.min(axis = 0))#[5 10 15]

#print (help(numpy.array))

axis表示按行或列进行计算,axis=1表示按行计算,axis=0表示按列计算

sum函数import numpy

vector = numpy.array([[5,10,15],

[20,25,30],

[35,40,45]

])

print (vector.sum())#225

print (vector.sum(axis = 1))#[30 75 120]

print (vector.sum(axis = 0))#[60 75 90]

arange和reshape函数

arange(x)表示构造一个0到x-1的一维矩阵;reshape(x,y)表示将矩阵改为x行y列import numpy as np

vector = np.arange(15)

print (vector)#[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]

vector = vector.reshape(3,5)

print (vector)

#[[ 0 1 2 3 4]

# [ 5 6 7 8 9]

# [10 11 12 13 14]]

arange还有一种用法arange(start,end,c),表示的含义是构造一个起始值为start,小于end的一个公差为c的等差序列

ndim和size变量import numpy as np

vector = np.arange(9)

vector = vector.reshape(3,3)

print (vector.ndim)#2

print (vector.size)#9

zeros和ones函数

zeros和ones分别构造全0和全1矩阵import numpy as np

print (np.zeros((2,2),dtype = np.int32))

#[[0 0]

# [0 0]]

print (np.ones((2,3),dtype = np.int32))

#[[1 1 1]

# [1 1 1]]

random函数import numpy as np

print (np.random.random((2,3)))#产生小于1的随机数

两个radom含义不一样,最左边的random类似于Java中包,先进入random包,然后调用random函数

linspace函数import numpy as np

from numpy import pi

print (np.linspace(0,2*pi,100))

linspace(start,end,num),构造起始值为0,终点值为end,个数为num个的一维矩阵

矩阵运算import numpy as np

A = np.array([[1,1],

[0,1]])

B = np.array([[2,0],

[3,4]])

print (A * B)#对应位置的元素相乘

print (A.dot(B))#矩阵乘法

ravel()

将n行m列的矩阵变成一行m*n列矩阵import numpy as np

vector = np.array([[1,2,3],

[4,5,6],

[7,8,9],

[10,11,12]])

print (vector.ravel())

print (vector.T)#转置

print (vector.reshape(4,-1))

reshape只要有一个参数确定,另一个参数就确定了,所以另一个参数如果你懒得算,直接写-1,python会自动计算另一个维度是多少

hstack和vstack函数

hstack函数的作用是将两个矩阵横着拼接在一起;vstack是将两个矩阵竖着拼接在一起import numpy as np

A = np.array([[1,2],

[3,4]])

B = np.array([[5,6],

[7,8]])

print (np.hstack((A,B)))

#[[1 2 5 6]

# [3 4 7 8]]

print (np.vstack((A,B)))

#[[1 2]

# [3 4]

# [5 6]

# [7 8]]

hsplit和vsplit函数

分割矩阵的函数import numpy as np

A = np.array([[1,2,3,4,5,6,7,8,],[9,10,11,12,13,14,15,16]])

print (A)

print (np.hsplit(A,4))

print (np.hsplit(A,(3,4)))

print (np.vsplit(A,2))

fbd86c7848bff8e2fdc09d1d8ad55845.png

矩阵复制import numpy as np

A = np.arange(12)

B = A

B.shape = 3,4

print (A.shape)#(3, 4)

print (id(A))#1521835664848

print (id(B))#1521835664848

从这结果我们可以看出,python赋值是传引用import numpy as np

A = np.arange(12)

B = A.view()

B.shape = 3,4

B[0,0] = 9

print (A[0:1])#[9]

print (A.shape)#(12,)

print (id(A))#1521835665728

print (id(B))#1521835665648

view相当于一个浅复制,虽然改变B的维度,A不变,但是如果改变A矩阵中某位置上的值,B里也会改变,反之也一样import numpy as np

A = np.arange(12)

B = A.copy()

B.shape = 3,4

B[0,0] = 9

print (A[0:1])#[0]

print (A.shape)#(12,)

print (id(A))#1521835666208

print (id(B))#1521835665488

copy和上面两种复制不一样,copy完完全全是将两个矩阵分离开,任何操作都不会影响到对方

argmax函数

argmax寻找最大值的下标,argmax(axis=0)表示按列寻找,argmax(axis=1)表示按行寻找import numpy as np

data = np.arange(12).reshape((3,4))

print (data.argmax(axis = 0))#[2 2 2 2]

tile函数

tile(data,(n,m)),将data矩阵扩展n行m列个import numpy as np

data = np.arange(10,40,10)

print (np.tile(data,(2,2)))

sort函数

排序import numpy as np

a = np.array([[4,3,5],[1,2,1]])

b = np.sort(a,axis = 1)

print (b)

#[[3 4 5]

# [1 1 2]]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值