【python】NumPy模块快速介绍

NumPy模块提供了数组,方便进行数据的计算,运算效率比列表的高。

目录

创建数组

提取元素

常用操作

添加

删除

去重

补充缺失

运算

四则运算

统计

补充

查看数组信息

重塑

转置

 拆分数组

 拼接


创建数组

简单创建:array()

import numpy as np
# 创建一维数组
# 数组中元素用空格分开
a = np.array([1,2,3,4])
# 创建二维数组
b = np.array([[1,2], [3,4]])

等差创建:arrange()

import numpy as np
# 创建 起始为1, 步长为2,结束值<=20 的等差数列
# 不指定则默认 步长为1
a = np.arrange(1, 20, 2)

随机创建:rand()完全随机、randn()符合正态分布、randint()指定随机的范围

import numpy as np
# 随机创建一个有3个元素的一维数组,每个元素的值在[0,1)
a = np.random.rand(3)
# 随机创建一个3行2列的二维数组
b = np.random.rand(3, 2)

# 随机的元素符合正态分布
# 若不指定行数,则同rand(),默认是一个一维的数组
c = np.random.randn(3)

# 指定随机数的范围
# 指定在[1,10)区间中随机生成5个数
# 若不指定行数,则同rand(),默认是一个一维的数组
d = np.random.randint(1, 10, 5)

提取元素

  1. 直接使用索引,注意python中索引可为负数代表倒数第几个
  2. 切片
import numpy as np
a = np.array([[1,2],[3,4],[5,6]]) # 一个三行两列的三维数组
b = np.array([1,2,3,4,5,6])    # 一行四列的一维数组

# 取单个元素
print(b[0])    
print(a[0,1])    #取第一行第二个元素

#切片取一段元素
print(b[0:5])    #取数组b的0至4号
print(b[0:5:2])    #取数组b的0,2,4号
print(b[5:0:-2])    #倒着取5,3,1号

print(a[0])    # 取第一行
print(a[:,1])    # 取第二列

print(a[0:2])    # 取第一行到第三行
print(a[:2])    # 取第三行前的所有行
print(a[1:])    # 取第二行后的所有行,包括最后一行

print(a[:, 1:2])    # 取所有行的第二到第三列,不包括第三列

print(a[0:1, 1:2])    # 取第一行至第二行的第二列到第三列

常用操作

添加

  1. append(),在数组尾部添加
  2. insert(),在数组指定位置添加

若不通过axis控制添加的方向,默认添加后改为一维数组

import numpy as np
a = np.array([1,2],[3,4])
a1 = np.append(a, [[5,6]])    # 整个变为一维
a2 = np.append(a, [[5,6]], axis=0)    # 指定在行方向上添加,得到三行二列
a3 = np.append(a, [[5,6],[7,8]], axis=1)  # 指定在列方向上添加,得到二行四列

b1 = np.insert(a, 1, [[5,6]])    # 在一维数组的索引1位置插入
b2 = np.insert(a, 1, [[5,6]], axis=0)    # 添加到索引1行即第二行
b3 = np.insert(a, 1, [[5,6]], axis=1)  # 添加到第二列,得到二行三列

删除

delete(),若不通过axis声明删除的行/列,则把多维数组展开为一维数组(可理解为用连续空间数组存矩阵),删除指定的索引

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
a1 = np.delete(a,2)    # 展开为一维,删除索引2,即删除3
a2 = np.delete(a, 2, axis=0)    # 指定删除第三行
a3 = np.delete(a, 2, axis=1)    # 指定删除第三列

去重

unique(),删除重复元素后,元素由小至大排列。

import numpy as np
a = np.array([9,2,2,3,3,4,5,6,7,8])
a1 = np.unique(a)    #去重并从小到大排列
a1, a2 = np.unique(a, return_counts=True) # 去重后的a1中每个元素在元素组a中出现的次数

补充缺失

isnan()定位数组中的缺失值,直接修改索引填充缺失

import numpy as np
a = [1,2,3,np.nan,5]    # np.nan为定义的缺失
print(np.isnan(a))    # 返回查找信息,有值的位置返回true,缺失返回false
a[np.isnan(a)] = 0    # 指定缺失位置的索引,修改缺失值

运算

四则运算

四则运算,即每个对应位置上的元素进行四则运算

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = np.array([[9,8,7],[6,5,4],[3,2,1]])
c = a+b    #每个对应位置上的元素相加
d = a*b    #对应位置相乘
e = a+5    # 每个位置的元素+5
f = a*10    # 每个位置的元素*10

统计

求和sum(),求平均值mean(),求最值max()与min()。均默认对整个数组进行统计,也可用axis参数控制对 行/列 数据进行统计

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
total = a.sum()    # 整个数组求和
total_row = a.sum(axis=0)    # 每列求和
total_line = a.sum(axis=1)    # 每行求和

avg = a.average()    # 整个数组求均值
avg_row = a.sum(axis=0)    # 每列求均值
avg_line = a.sum(axis=1)    # 每行求均值

maxnum = a.max()    # 整个数组求最大
max_row = a.max(axis=0)    # 每列求最大
max_line = a.max(axis=1)    # 每行求最大

补充

查看数组信息

打印行列数shape、元素个数size、数据类型dtype、转换数据类型astype、查看维数ndim

import numpy as np
# 一个三行两列的数组
a = np.array([[1,2],[3,4],[5,6]])
print(a.shape)    # 元组返回行数和列数
print(a.size)    # 返回数组元素个数
print(a.dtype)    # 返回数组中元素的数据类型
b=a.astype(float)    #转换数组的数据类型为float
print(a.ndim)    # 返回数组的维数,可理解为返回列数

重塑

通过reshape()函数,把原来的数组在不改变个数和内容的情况下变成多行多列的数组

import numpy as np
a = np.array([[1,2,3],[4,5,6]])    # 创建的二行三列
b = a.reshape(1,6)    # 转为一行六列
c = a.reshape(3,2)    # 转为三行两列 

转置

数组可以理解为矩阵,这里的转置即矩阵的转置:把原来的列变成行,把行变成列。

  1. 直接调用T属性
  2. 使用transpose()函数
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9])
print(a.T)    # 使用T属性转置
print("------")
b = np.transpose(a)    #使用transpose()转置
print(b)

 拆分数组

分割成多个数组

  1. split()指定平均分为多少个数组,按指定索引拆分
  2. hsplit()横向拆分
  3. vsplit()纵向拆分
import numpy as np
a = np.array([1,2,3,4,5,6,7,8])
a1 = np.split(a, 2)    # 数组A均分为两组,[array([1,2,3,4]),array([5,6,7,8])]
a2 = np.split(a, [2,7])    # 在索引2~4的位置前进行拆分,分为三组

b = np.array([[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4]])
b1 = np.hsplit(b, 2)    # 横向拆为2组
b2 = np.vsplit(b, 2)    # 纵向拆为2组

 拼接

数组的拼接同矩阵的拼接,只能和同一维度的数组进行拼接,多维数组的拼接必须行列数一样。

  1. concatenate()合并矩阵,axis参数指定在行/列的方向上拼接
  2. hstack(),同行方向上的concatenate
  3. vstack(),同列方向上的concatenate
import numpy as np
a = np.array([1,2],[3,4])
b = np.array([5,6],7,8)
c = np.concatentate((a,b), axis=0)    # 列方向上拼接,放在矩阵的下边
d = np.concatentate((a,b), axis=1)    # 行方向上拼接,放在矩阵的右边
e = np.hstack((a,b))    # 水平堆叠,同行方向拼接
f = np.vstack((a,b))    # 垂直堆叠,同列方向拼接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值