Numpy

Numpy

矩阵初始化、生成等基础操作

矩阵形状、类型

import numpy as np

vector = np.array([
    [1,2,3,4],
    [23,4,5,5],
    [23,4,53.3]
])

print (vector.shape)
print (vector.dtype)

在这里插入图片描述

按顺序产生0到15个数,并转化为3*5矩阵

np.arange(15).reshape(3,5)

在这里插入图片描述

生成3*3随机小数的矩阵

np.random.random((3,3))#从小数后一位产生

在这里插入图片描述

初始化一个3行4列的矩阵(零矩阵)

np.zeros((3,4))
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20191219141306469.png)

等差排列向量

#从0开始,终点值为2*π,取100个数,(注:pi:π)
np.linspace(0,2*pi,100)

在这里插入图片描述

矩阵的运算

矩阵每个元素求平方

b=  np.arange(4)
b**2

在这里插入图片描述

矩阵对应位置做乘法

#矩阵位置相乘
a = np.array([2,2,2,2])
b= np.array([1,2,3,4])
a*b

在这里插入图片描述

矩阵乘法

A = np.array(  [[1,2],
        [1,2]])
B = np.array([[1,2],
     [2,3]])
print(A)
print("="*20)
print(B)
print("矩阵乘法结果")
print(A.dot(B))

在这里插入图片描述

矩阵e的多少次幂,平方根

B= np.arange(3)
print(B)
print(np.exp(B))#e的多少次幂
print(np.sqrt(B))#平方根

在这里插入图片描述

矩阵其他操作

矩阵改形、转置、随机数取整

a = np.floor(np.random.random((3,4))*10)#随机数的向下取整,去掉小数部分
print(a)
print("-"*20)
print(a.ravel())#将一个矩阵拉成一维矩阵
print("-"*20)
a.shape = (6,2)#改变矩阵行列个数,保证矩阵个数一致
print(a)
print("-"*20
print(a.T)#求矩阵的转置

在这里插入图片描述

矩阵的拼接、取整

a = np.floor(np.random.random((3,4))*10)#随机数的向下取整,去掉小数部分
b = np.floor(np.random.random((3,4))*10)#随机数的向下取整,去掉小数部分
print(a)
print("-"*20)
print(b)
print("-"*20)
print(np.hstack((a,b)))#横向拼接
print("-"*20)
print(np.vstack((a,b)))#纵向拼接

在这里插入图片描述

矩阵的切割

print(a)
print("-"*20)
print(np.hsplit(a,2))#0,8,8,4在8与8之间切分开
print("-"*20)
print(np.hsplit(a,(1,2)))#在1与2的位置切分出来

在这里插入图片描述

矩阵赋值问题

#矩阵赋值问题,从id之看出,c与a,类似有c++中的引用
c = a
print(id(a))
print(id(c))
#使a,c指向不同的地方,对矩阵变型,互不影响,但公用一套值
c = a.view()#更改指向的位置
print(id(c))
print(a)
print(c)
print("-"*20)
c.shape=(2,6)#
print(a)
print(c)
print("-"*20)
#更改c中的值
c[0,4] = 123
print(a)
print(c)
print("-"*20)
#使a,c指向的位置不一样,值也不互相影响
d= a.copy()
d is a
d[0,0] =99
print(a)
print(d)
print("-"*20)

在这里插入图片描述

找矩阵最大值

a = np.array([[0,12,4,58],[15,48,89,8],[45,78,9,8]])
print(a)
print("-"*20)
ind =a.argmax(axis=0)#axis=0按列找行的最大值的下标
print(ind)
print(a.shape)
data_max = a[ind,range(a.shape[1])]#a.shape[1]取列的个数,相当于从行:[2,2,1,0],列:[0,1,2,3]一一对应取下标
print(data_max)

在这里插入图片描述

矩阵的扩展

a = np.arange(0,40,10)#从0开始到40结束,每一步加10
print(a)
print("-"*20)
b = np.tile(a,(4,3))#以a为基础,行扩展4倍,列扩展3倍
print(b)

在这里插入图片描述

矩阵排序

#对每一行从小到大,排序的索引为排完序的元素以前的位置
ini = np.argsort(a)#排序的索引
print(ini)
print("-"*20)
i = 0;
#按照索引的顺序遍历
print(a.shape[1])
for j in ini:
    print(a[i][j])#按索引查值
    i +=1

在这里插入图片描述

矩阵的切片

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

print(a)
print("="*20)  
print(a[:,1])   # 第2列元素

print("="*20)  
print(a[1,])   # 第2行元素

print("="*20)  
print(a[:,1:])  # 第2列及剩下的所有元素

在这里插入图片描述
对切片总结:

  • 对于多维数组,[ , ] 注释 ‘,’分隔开的分别为行与列

  • 行与列的下标从0开始

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值