Numpy简单入门

3 篇文章 0 订阅

概述

Numpy是高性能科学计算好数据分析的基础包,提供了矩阵运算的功能,在深度学习和数据分析领域广泛应用。。

使用

创建array数组

vector = np.asarray([1,2,3,4]);

创建zero数组

a = np.zeros(10) # 创建向量
 a1 = np.zeros(shape=(5,3)) # 创建5行,3列的0矩阵

创建one矩阵

one = np.ones((3,4));

创建自定义值的矩阵

user_define = np.full((3, 5), 110)  # 创建一个3行5列的矩阵,且填充值为110

创建递增的矩阵

np.arange(0,20,2) # 三个参数,第一个参数表示向量第一个值,第二个参数表示最后的值,第三个参数为步长

使用linspace创建等分的矩阵

np.linspace(0, 10, 5) # 三个参数,第一个参数表示向量开始的值,第二个参数代表向量最后的值,第三个参数表示向量总数

用随机数来创建矩阵

np.random.randint(0,10,size = 10) # 用0到10范围内产生的随机数产生一个长度为10的向量
np.random.randint(4,9,size = (5,3)) # 用4到9范围内的随机数产生一个5行3列的矩阵

用正太分布来创建矩阵

np.random.normal(loc = 1.0, scale = 1.0, size = (3,2)) # 用一个均值loc为1.0,参数为scale为1的正太分布,创建一个3行2列的矩阵

Numpy中的属性

数组维度

ndim 表示数组维度(或轴)的个数。

arr_1_d = np.asarray([1])
arr_2_d = np.asarray([[1, 2], [3, 4]])
print(arr_1_d.ndim) #结果为1,代表arr_1_d为1维矩阵也就是向量
print(arr_2_d.ndim) # 结尾为2

形状

shape 表示数组的维度或形状, 是一个整数的元组类型,元组的长度等于 ndim。

print(arr_1_d.shape) # 结果为
print(arr_2_d.shape) # 结果为[2,2]

shpe这个属性用途很广,借助于reshape()函数我们甚至还可以对数组形状进行改变,但需要保证变换后和变换前矩阵元素数量一致

arr_2_d.reshape((4,1)) # 将arr_2_d reshape为(4,1)的数组

此外reshape还有一个**order参数,**指的是以什么样的顺序读取元素,其中有这样几个参数

  • ‘C’:默认参数,使用类似 C-like 语言(行优先)中的索引方式进行读写。
  • ‘F’:使用类似 Fortran-like 语言(列优先)中的索引方式进行读写。
  • ‘A’:原数组如果是按照‘C’的方式存储数组,则用‘C’的索引对数组进行 reshape,否则使用’F’的索引方式。
np.arange(6).reshape(2,3)
# 结果为
# array([[0, 1, 2],
#       [3, 4, 5]])
np.arange(6).reshape(2,3,order = 'F')
# 结果为
# array([[0, 2, 4],
#       [1, 3, 5]])

size

size,也就是数组元素的总数,它就等于 shape 属性中元素的乘积。

arr_2_d.size # 结果为2

矩阵类型

dtype,它是一个描述数组中元素类型的对象。

使用 dtype 属性可以查看数组所属的数据类型。NumPy 中大部分常见的数据类型都是支持的,例如 int8、int16、int32、float32、float64 等。dtype 是一个常见的属性,在创建数组,数据类型转换时都可以看到它。

arr_2_d.dtype # 结果为dtype('int64')

通过astype()方法,我们可以将老矩阵按照指定类型输出一个新矩阵。

vector = np.arange(1,3)
print(vector.dtype) # 结果为int32
vector = vector.astype(float) # 结果为float64

矩阵运算

矩阵之间的点乘

矩阵乘法要求第一个矩阵的列数要等于第二矩阵的行数,具体点乘的函数为dot()

a = np.arange(1, 6).reshape(2,3) 
b = np.arange(1,7).reshape(3,2)
print(a.shape[1] == b.shape[0])
print(a.dot(b)) 
# 结果
# [[22 28]
# [49 64]]

矩阵的转置

把原来矩阵的行变成列,列变成行

a = np.arange(1,7),reshape(2,3)
print(a.T)
# 结果
[[1 4]
 [2 5]
 [3 6]]

矩阵的逆

如果要求矩阵的逆,首先需要导入numpy.linalg,然后通过linalg的inv函数来求逆,矩阵求逆的条件是矩阵的行数和列数必须相同。

import numpy.linalg as lg
a = np.array([[0,1],[2,3]])
invA = lg.inv(a)
# 结果
print(A.dot(invA))
# 结果
array([[-1.5,  0.5],
       [ 1. ,  0. ]])

arg运算

argmax(a, axis = None, out = None)函数主要用来求一个array中最大值的下标,就是最大数所对应的索引位置是多少。

index = np.argmax([1,2,9,3,2]) # 结果为2

axis代表按照哪个轴来找最大的索引值

总结

从tx实习回来之后忙于秋招、毕设好久没有认认真真的写博客了,今天这一篇就立个flag吧,以后每周都要写一篇博客,保持原有写博客的习惯。

相关推荐

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页

打赏作者

vcjmhg

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值