1,矩阵大小与矩阵元素类型查看:
vector = numpy.array([1,2,3,4]) #创建一个向量
matrix = numpy.array([[5,10,15],[20,25,30],[35,40,45]]) #创造一个3×3矩阵
print(vector.shape) #向量或矩阵大小
print(matrix.shape)
print(vector.dtype) #数据类型(numpy中的数据类型保持一致)
print(matrix.dtype)
注意: numpy中的数据类型保持一致,当不一样时会自动转换其中的类型变为一致
(2)矩阵元素的切片操作:
pixel = matrix[1,1] #单个元素查找
print(pixel)
line1 = matrix[1,:] #查找某一行元素
print(line1)
col1 = matrix[:,1] #查找某一列元素
print(col1)
rowcol = matrix[0:2,1:2] #截取矩阵某一部分
print(rowcol)
numpy的元素判断操作:
equal_to_ten = (matrix[:,1] == 10) #判断10是否在matrix的第一列中,返回值为Bool型
print(equal_to_ten)
print(matrix[equal_to_ten,:]) #利用得到的判断进行元素索引
3,numpy类型转换:
vector = ['1','2','3','4']
vector = vector.astype(float) #数据类型转化
print(vector.dtype)
print(vector)
4,numpy矩阵运算
vector = numpy.array[1,2,3,4] #求最小值
print(vector.min())
matrix = numpy.array([[5,10,15],[20,25.30],[35,40,45]])
matrix.sum(axis = 1) #求矩阵行的总和,若等于0,则对列进行求和
b = matrix*matrix #两个矩阵的对应元素相乘
c = np.dot(matrix,b) #执行两个矩阵相乘
5,numpy中常用的函数
import numpy as np
vector = np.arange(15) #产生0到14得数
np.arange(10,30,5) #10是初始数,30是结尾,左闭右开,5为步长
a = np.arange(15).reshape((3,5)) #产生0到14,并将其化为3×5的矩阵
b = np.zeros(3,4) #创建一个3×4的矩阵,元素全为0
c = np.ones(3,4) #创建一个全为1的矩阵
np.random.random((3,4)) #调用random中的random模块产生一个3×4的随机矩阵
np.linspace(0,2*pi,100) #在0到2*pi间均匀取100个数
a.ndim #得到a的维度
6,矩阵的常用操作
import numpy as np
b = np.arange(3)
print(b)
print(np.exp(b)) #求矩阵内元素的e次幂
print(np.sqrt(b)) #求矩阵内元素的开方
a= np.floor(10*np.random.random((3,4))) #对通过随机产生数进行向下取整
a.ravel() #将矩阵变为向量
a.shape = (2,6) #将a变为2×6
print(a.T) #求到a的转置
#矩阵拼接
c = np.floor(10*np.random.random((3,4)))
d = np.hstack(a,c) #将两个矩阵进行横向拼接
e = np.vstack(a,c) #将两个矩阵进行纵向拼接
f = np.hsplit(d,2) #将矩阵d横向切分为两份,若第二个参数传入元组,则进行指定切分
g = np.vsplit(e,2) #将矩阵e纵向切分为两份
7,不同复制操作对比
import numpy as np
a = np.arange(12)
#深复制:具有相同的id和值
b = a #将a赋予b,深复制,a与bid相同,指向同一地方
b.shape = (3,4)
print(a.shape) #a的shape也变成3,4
print(id(a))
print(id(b)) #a与b的id值相同
#浅复制,具有相同的值,但id不同
c = a.view() #对a进行浅复制,为c重新创造一个id,通过这种方式的复制两个矩阵具有相同的值
c.shape = (2,6)
c[0,4] = 1234
print(a) #c[0,4] = 1234赋予a中
print(a.shape) #a的shape并未随着c变化
print(id(a))
print(id(c)) a与c具有不同的id
#复制双方具有不同的值和id
d = a.copy() #将d任意改变也不会影响a
8,矩阵内的排序与索引
#索引
import numpy as np
data = np.sin(np.arange(20).reshape(5,4))
ind = data.argmax(axis = 0) #所以矩阵列上最大值的索引,若axis=1则为行
datamax = data[ind,range(data.shape[1])] #列出每一列的最大值
a = np.range(0,40,10)
b = np.tile(a,(3,4)) #对a进行3×4的扩展
#排序
a = np.array([[4,3,5],[1,2,1]])
b = np.sort(a,axis = 1) #对a矩阵的行进行从小到大排序
c = np.array([4,3,1,2])
d = np.argsort(c) #对a矩阵进行从小到大的排序,输出为其索引值