Numpy 简介

1. 创建数组

numpy 的主要对象是多维数组ndarray,通常使用np.array创建数组。

#创建一维数组
np.array([1,2,3])
#通过list创建二维数组
np.array([(1,2,3),(4,5,6)])
#创建全为0的三维数组
np.zeros((3,3))
#创建全为 1 的三维数组
np.ones((2,3,4))
#创建一维等差数组
np.arange(5)                        #内置为range()
# 创建二维等差数组
np.arange(6).reshape(2,3)               #创建多维数组
# 创建单位矩阵(二维数组)
np.eye(3)
# 创建等间隔一维数组
np.linspace(1, 10, num=6)
# 创建二维随机数组
np.random.rand(2,3)
# 创建二维随机整数数组(数值小于 5)
np.random.randint(5, size=(2,3))

数组属性

a.shape
a.size
a.dtype

2. 数组运算

A=np.array([[4,3],[2,1]])
B=np.array([[5,6],[7,8]])
# 矩阵加法运算
A+B  、np.add(a,b)
# 矩阵元素间乘法运算
A * B
# 矩阵乘法运算
np.dot(A,B)
# 如果使用 np.mat 将二维数组准确定义为矩阵,就可以直接使用 * 完成矩阵乘法计算
np.mat(A)*np.mat(B)
# 矩阵的转置
A.T
# 矩阵求逆
np.linalg.inv(A)
# 数组的方根的运算(开平方)
np.sqrt(A)
# 数组的方根的运算(立方)
np.power(A, 3)

3. 数组的展平、变维、分割与合并

a = np.arange(12)
# 数据变维
b = a.reshape(2,6)   # 原数组的仍保留其原有的维度
a.resize((4,3))     # 对原数组的变维
# 展平
a = np.arange(8).reshape(2,4)
a.ravel()
a.flatten()   #以上是两种方法对多维数组进行展平,结果只能是一维数组

# 合并
a =([[0, 1, 2], [3, 4, 5]])
b =([[0, 2, 4], [6, 8, 10]])

# 1. 水平合并
np.hstack((a,b))  # 或np.column_stack((a,b)) 或np.concatenate((a,b),axis=1)
# 2. 垂直合并
np.vstack((a,b))  # np.row_stack((a,b))、np.concatenate((a,b),axis=0)
# 上面的合并是把数组简单的累计放在一起,也就是按照顺序将后一个数组排放在前一个数组后,numpy中还提供了深度合并
np.dstack((a,b))

# 3. 分割
# 3.1 水平分割
c = np.arange(9).reshape(3,3)
np.hsplit(c,3)    # 调用 split 函数并在参数中指定参数 axis=1 ,即split(a, 3, axis=1),同样可达到以上效果
# 3.2 垂直分割
np.vsplit(c,3)
split(a, 3, axis=0)

4. 索引、切片

4.1 索引

a = np.array([1, 2, 3, 4, 5])
a[0], a[-1]  #输出第一个数和最后一个数

np.argmax(a,axis=0) #返回每列最大值索引

a = np.array([(1,2,3),(4,5,6),(7,8,9)])
a[0], a[-1]  #输出第一行和最后一行

4.2 切片

a = np.array([1, 2, 3, 4, 5])
a[0:2], a[:-1]
a[1:3, :] # 二维数组切片(取第 2,3 行)

5. 数组统计

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

np.median(a, axis=0)    # 统计数组各列的中位数
np.mean(a, axis=1)      # 统计数组各行的算术平均值
np.average(a, axis=0)    # 统计数组各列的加权平均值

np.var(a, axis=1)      #统计数组各行的方差
np.std(a, axis=0)      # 统计数组各列的标准偏差

np.argmax()          # 求最大值的出现位置
np.argmin()          #求最小值的出现位置

6. 排序

np.sort()            # 排序

argsort()函数是numpy库中的函数,返回的是数组值从小到大的索引值。

import numpy as np
x= np.array([3,5,1,0])
x.argsort()
# array([3, 2, 0, 1], dtype=int64)

解析:
在 [3,5,1,0]中 ,"3"的索引是0,"5"的索引是1,"1"的索引是2,"0"的索引是3,[3,5,1,0]从小到大排序为0,1,3,5 即对应的索引为 3, 2, 0, 1。
注:argsort函数返回的是:数组值从小到大的“索引值”。

7. tile方法

Numpy的 tile() 函数,就是将原矩阵横向、纵向地复制。tile 是瓷砖的意思,顾名思义,这个函数就是把数组像瓷砖一样铺展开来。

原型:numpy.tile(A,reps)
tile共有2个参数,A指待输入数组,reps则决定A重复的次数。整个函数用于重复数组A来构建新的数组。

举个例子,原矩阵:

mat = array([[1,2], [3, 4]])

横向:
tile(mat, (1, 4)) 等同于 tile(mat, 4)

import numpy  as np
mat= np.array([[1,2],[3,4]])
a = np.tile(mat,4)
b = np.tile(mat,(1,4))
print(a,b)

在这里插入图片描述

结果:

[[1 2 1 2 1 2 1 2]
 [3 4 3 4 3 4 3 4]]

纵向:

tile(mat, (3, 1))
在这里插入图片描述

结果:

[[1 2]
 [3 4]
 [1 2]
 [3 4]
 [1 2]
 [3 4]]

横向 + 纵向

tile(mat, (3, 4))
在这里插入图片描述

结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值