Numpy05 --- 切片和索引及数据的修改

测试代码

import numpy as np

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

切片 slice

numpy中的切片和python列表中的切片操作相似
可以从大数组中切出小数组

# 取第二行
print(arr[1])

# 取第二列
print(arr[:,1])

在这里插入图片描述

# 取连续多行
print(arr[2:])

# 取连续多列
print(arr[:,2:])

在这里插入图片描述

# 取不连续行或者列
# 取1、3行
print(arr[[0,2]])
# 取1、3列
print(arr[:,[0,2]])

在这里插入图片描述

# 取多行多列
# 取第二行第二列
print(arr[1,1])
# 取第一行到第二行及第二列到第三列
print(arr[1:,1:])

在这里插入图片描述

# 使用步长
# 每隔一行一列取
print(arr[0:3:2,0:3:2])

在这里插入图片描述

索引

通过切片可以获取指定的值,说明切片也是一种索引

布尔索引

# 布尔索引
print(arr<5)
# 取小于5的数据
print(arr[arr<5])

在这里插入图片描述

条件索引

python中多个条件用and或者or
但numpy中需要用&或者 |

import numpy as np

# 三维数组
arr = np.array(
    [[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]]
)
print(arr)
print("*"*15)

arr = arr[(arr>3) & ( arr<6)]
print(arr)

在这里插入图片描述

数组元素的修改

通过索引获取到指定位置的值,然后直接将其替换

# 把5替换为0
arr[1,1] = 0
print(arr)

在这里插入图片描述

数组元素的增添

append

在数组末尾追加元素

numpy.append(arr, values, axis=None)

参数作用
arr需要修改的数组
values增添的数据,必须和原数组形状相同
axis默认为 None,横向,返回一维数组,0则沿0轴方向增添元素,1则沿1轴方向增添元素
arr = np.append(arr,[0,0,0])
print(arr)

在这里插入图片描述

# 沿0轴添加元素
arr = np.append(arr,[[0,0,0]],axis=0)
print(arr)

print("*"*15)

# 沿1轴添加元素
arr = np.append(arr,[[0],[0],[0],[0]],axis=1)
print(arr)

在这里插入图片描述

insert

沿指定轴将值插入到指定下标之前

np.insert(arr, obj, values, axis)

参数作用
arr需要修改的数组
obj在其之前插入值的索引
values插入的数据,必须和原数组形状相同
axis0则沿0轴方向插入元素,1则沿1轴方向插入元素 ,若没有指定,则展开数组
print(arr)
print("*"*15)
# 沿0轴插入,在第一行后面
arr = np.insert(arr,1,[9,9,9],axis=0)
print(arr)

print("*"*15)

# 沿1轴插入,在第一列后面
arr = np.insert(arr,1,[0,0,0,0],axis=1)
print(arr)

在这里插入图片描述

数组元素的删除

delete

按照指定条件删除数组的指定元素

np.delete(arr, obj, axis)

参数作用
arr需要修改的数组
obj在其之前插入值的索引
values插入的数据,必须和原数组形状相同
axis0则沿0轴方向插入元素,1则沿1轴方向插入元素 ,若没有指定,则展开数组
# 删除第一行
arr = np.delete(arr,0,axis=0)

在这里插入图片描述

# 删除第一列
arr = np.delete(arr,0,axis=1)

在这里插入图片描述

数组元素去重

unique

去除数组中的重复元素,最后返回一个列表

np.unique(
arr, return_index=False, return_inverse=False, return_counts=False, axis=None)

参数作用
arr需要处理元素
return_index默认为false,true则返回新列表元素在旧列表中的位置(下标),列表顺序
return_inverse默认为false,true则返回旧列表元素在新列表中的位置(下标),列表顺序
return_counts默认为false,true则返回各个元素出现的次数
axis默认无,0则沿0轴方向插入元素,1则沿1轴方向插入元素 ,若没有指定,则展开数组
import numpy as np

arr = np.array(
    [[1, 2, 7],
    [4, 1, 6],
    [7, 8, 9]]
)
print(arr)
print("*"*15)
# 去重
arr = np.unique(arr)
print(arr)

在这里插入图片描述

import numpy as np

arr = np.array(
    [[1, 2, 7],
    [4, 1, 6],
    [7, 8, 9]]
)
print(arr)
print("*"*15)
# 去重
arr, index, inverse, counts = np.unique(arr,return_index=True,return_inverse=True,return_counts=True)
print(arr)
print("*"*15)
print(index)
print(inverse)
# 打印各个元素出现次数
print(counts)

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值