genfromtxt函数
import numpy
tmp = numpy.genfromtxt("1.txt",delimiter=",",dtype=str)
print (type(tmp))
print (tmp)
print (help(numpy.genfromtxt))
genfromtxt函数里串了三个参数,分别是 要打开的文档名称,分隔符,以什么类型存储
打印结果:
第一行输出的是"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)#<U11
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))
矩阵复制
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]]
[...]科学计算库Numpy - mathor (wmathor.com)[...]