Numpy矩阵运算

Numpy基础

1.创建一维数组以及二维数组,二维数组类似于list of list

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

2.输出一维二维数组的结构:.shape !!!debug最常用

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

3.numpy array里面创造的必须是相同的结构,如果里面有一个浮点型数字就会把其他int型转为float,改成跟通用格式,eg:2.0

4.存取也是通过索引,切片也可以使用
5.判断集合中的元素,首先是&(且),接着是|(或)关系:

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

输出的结果均为布尔型集合

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

6.对整体作值的改变:

vector = numpy.array(["1","2","3"])
print(vector.dtype)
print (vector)
vector = vector.astype(float)#stype进行值类型转换
print (vector.dtype)
print (vector)

输出:
在这里插入图片描述
7.求极值操作:

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

8.求和并且axis=1:

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

输出:
在这里插入图片描述

Numpy常用函数

创建一个数组:

import numpy as np
print (np.arange(15))

在这里插入图片描述
使用reshape进行向量改变成为一个矩阵:

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

输出结果为:
在这里插入图片描述
打印行和列分别是多少:

a.shape

维度:

a.ndim

类型:

a.dtype.name

元素个数:

a.size

指定初始化值都为0,按照括号内的数字进行创建矩阵:

np.zeros((3,4))

输出:
在这里插入图片描述
从10开始,加5直到30:

np.arange(10,30,5)

生成随机矩阵:

np.random.random((2,3))

起始0,终点值6.28,中间平均取100个值:

from numpy import pi
np.linspace(0,2*pi,100)

在这里插入图片描述

a = np.array([20,30,40,50])
b = np.arange(4)
print(a)
print(b)
c = a-b
print(c)
c = c-1
print(c)
b**2
print (b**2)
print (a<35)

在这里插入图片描述
矩阵操作:

A = np.array([[1,1],
             [0,1]])
B = np.array([[2,0],
             [3,4]])
print(A)
print('--------')
print(B)
print('--------')
print(A*B)#矩阵*乘,对应位置进行相乘
print('--------')
print(A.dot(B))#矩阵的乘法
print('--------')
print(np.dot(A,B))#两种表达方式

在这里插入图片描述
e和根号操作:

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)))
print(a)
print('---------')
print(a.ravel())#矩阵转化为向量
print('---------')
a.shape = (6,2)
print(a)
print('---------')
print(a.T)#求转置

在这里插入图片描述
矩阵拼接:hstack

#矩阵拼接
import numpy as np
a = np.floor(10*np.random.random((2,2)))
b = np.floor(10*np.random.random((2,2)))
print(a)
print('------')
print(b)
print('------')
print(np.hstack((a,b)))

在这里插入图片描述
矩阵拆分:hsplit

a = np.floor(10*np.random.random((2,12)))
print(a)
print('------')
print(np.hsplit(a,3))#对a切分成3块,切分后都是单独的array,任意切分成三块,
print('------')
print(np.hsplit(a,(3,4)))#对指定位置进行切分
a = np.floor(10*np.random.random((12,2)))
print('------')
print(a)
np.vsplit(a,3)#横向切

在这里插入图片描述

复制

import numpy as np
a = np.arange(12)
b = a#通过复制操作,指向区域一致,通过等号赋值
print(b is a)
b.shape = 3,4
print (a.shape)
print (id(a))
print (id(b))

在这里插入图片描述

c = a.view()
print(c is a)
c.shape = 2,6
print (a.shape)
c[0,4] = 1234
print(a)
print(id(a))
print(id(c))

在这里插入图片描述

d = a.copy()
d is a
d[0,0] = 9999
print (d)
print (a)

在这里插入图片描述

import numpy as np
data = np.sin(np.arange(20)).reshape(5,4)
print (data)
ind = data.argmax(axis=0)
print (ind)
data_max = data[ind,range(data.shape[1])]
print (data_max)

在这里插入图片描述

a = np.arange(0,40,10)
print(a)
b = np.tile(a,(3,5))#.tile操作是扩展,进行行列扩展
print(b)

在这里插入图片描述

a = np.array([[4,3,5],[1,2,1]])
print(a)
print('-------')
b = np.sort(a,axis=1)
print(b)
a.sort(axis=1)
print('-------')
print(a)
a = np.array([4,3,2,1])
j = np.argsort(a)#求索引,最小值索引
print('-------')
print(j)
print('-------')
print(a[j])

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值