Python笔记:操作ndarray元素:访问、删除、插入

2023-11-17

引入

import numpy as np

在此引入一次,下面直接使用 np

访问ndarray元素

x = np.array([1, 2, 3, 4, 5])
print()
print('x = ', x)
print()
print('This is First Element in x:', x[0]) 
print('This is Second Element in x:', x[1])
print('This is Fifth (Last) Element in x:', x[4])
print()
print('This is First Element in x:', x[-5])
print('This is Second Element in x:', x[-4])
print('This is Fifth (Last) Element in x:', x[-1])

输出:

x = [1 2 3 4 5]

This is First Element in x: 1
This is Second Element in x: 2
This is Fifth (Last) Element in x: 5

This is First Element in x: 1
This is Second Element in x: 2
This is Fifth (Last) Element in x: 5
  • 在方括号 [ ] 中添加索引来访问元素。
  • 可以使用正索引和负索引访问 ndarray 中的元素。
  • 正索引表示从数组的开头访问元素,负索引表示从数组的末尾访问元素。
  • 正索引从 0 开始,负索引从 -1 开始。

修改ndarray元素

  • 修改秩为 1 的 ndarray :
x = np.array([1, 2, 3, 4, 5])
print()
print('Original:\n x = ', x)
print()
x[3] = 20
print('Modified:\n x = ', x)

输出:

Original: x = [1 2 3 4 5]

Modified: x = [ 1 2 3 20 5]
  • 修改秩为 2 的 ndarray
X = np.array([[1,2,3],[4,5,6],[7,8,9]])
print()
print('Original:\n X = \n', X)
print()
X[0,0] = 20
print('Modified:\n X = \n', X)

输出:

Original:
X =
[[1 2 3]
 [4 5 6]
 [7 8 9]]

Modified:
X =
[[20 2 3]
 [ 4 5 6]
 [ 7 8 9]]

删除ndarray元素

x = np.array([1, 2, 3, 4, 5])
Y = np.array([[1,2,3],[4,5,6],[7,8,9]])
print()
print('Original x = ', x)
x = np.delete(x, [0,4]) # 此处删除第一个和第五个(最后一个)元素
print()
print('Modified x = ', x)
print()
print('Original Y = \n', Y)
w = np.delete(Y, 0, axis=0) # 此处删除第一行的元素
v = np.delete(Y, [0,2], axis=1) # 此处删除第一列和第三列(最后一列)的元素
print()
print('w = \n', w)
print()
print('v = \n', v)

输出

Original x = [1 2 3 4 5]

Modified x = [2 3 4]

Original Y =
[[1 2 3]
 [4 5 6]
 [7 8 9]]

w =
[[4 5 6]
 [7 8 9]]

v =
[[2]
 [5]
 [8]]
  • 对于秩为 1 的 ndarray,不需要使用关键字 axis
  • 对于秩为 2 的 ndarray,axis = 0 表示选择行,axis = 1 表示选择列。

插入ndarray元素

  • 使用 np.append(ndarray, elements, axis) 函数向 ndarray 中附加值

    x = np.array([1, 2, 3, 4, 5])
    Y = np.array([[1,2,3],[4,5,6]])
    print()
    print('Original x = ', x)
    x = np.append(x, 6) # 秩为1的ndarray,直接append
    print()
    print('x = ', x)
    x = np.append(x, [7,8]) # 秩为1的ndarray,也可通过列表一次添加多个
    print()
    print('x = ', x)
    print()
    print('Original Y = \n', Y)
    v = np.append(Y, [[7,8,9]], axis=0) # 秩为2的ndarray,添加一行
    q = np.append(Y,[[9],[10]], axis=1) # 秩为2的ndarray,添加一列; 当然也可添加两列 q = np.append(Y,[[9,99],[10,100]], axis=1)
    print()
    print('v = \n', v)
    print()
    print('q = \n', q)
    

    输出:

    Original x = [1 2 3 4 5]
    
     x = [1 2 3 4 5 6]
     
     x = [1 2 3 4 5 6 7 8]
     
     Original Y =
     [[1 2 3]
      [4 5 6]]
     
     v =
     [[1 2 3]
      [4 5 6]
      [7 8 9]]
     
     q =
     [[ 1 2 3 9]
      [ 4 5 6 10]]
    
    
    • 该函数会将给定的元素列表沿着指定的轴附加到 ndarray 中。
    • 当我们将行或列附加到秩为 2 的 ndarray 中时,行或列的形状必须正确,以与秩为 2 的 ndarray 的形状相符。
  • 使用 np.insert(ndarray, index, elements, axis) 函数向 ndarray 中插入值

    x = np.array([1, 2, 5, 6, 7])
    Y = np.array([[1,2,3],[7,8,9]])
    print()
    print('Original x = ', x)
    x = np.insert(x,2,[3,4]) # 向秩为1的ndarray第三个元素前插入3和4
    print()
    print('x = ', x)
    print()
    print('Original Y = \n', Y)
    w = np.insert(Y,1,[4,5,6],axis=0) # 向秩为2的ndarray第二行前,插入4,5,6
    v = np.insert(Y,1,5, axis=1) # 向秩为2的ndarray前第二列前,插入5
    print()
    print('w = \n', w)
    print()
    print('v = \n', v)
    

    输出:

    Original x = [1 2 5 6 7]
    
    x = [1 2 3 4 5 6 7]
    
    Original Y =
    [[1 2 3]
     [7 8 9]]
    
    w =
    [[1 2 3]
     [4 5 6]
     [7 8 9]]
    
    v =
    [[1 5 2 3]
     [7 5 8 9]]
    
  • 此函数会将给定的元素列表沿着指定的轴插入到 ndarray 中,并放在给定的索引前面。

  • 使用 np.vstack() 函数进行垂直堆叠,或使用 np.hstack() 函数进行水平堆叠。

    x = np.array([1,2])
    Y = np.array([[3,4],[5,6]])
    print()
    print('x = ', x)
    print()
    print('Y = \n', Y)
    z = np.vstack((x,Y)) # 此处将x置于Y之上,形成新的ndarray
    w = np.hstack((Y,x.reshape(2,1))) # 此处将变形后的x置于Y的右侧,形成新的ndarray 
    print()
    print('z = \n', z)
    print()
    print('w = \n', w)
    

    输出:

    x = [1 2]
    
    Y =
    [[3 4]
     [5 6]]
    
    z =
    [[1 2]
     [3 4]
     [5 6]]
    
    w =
    [[3 4 1]
     [5 6 2]]
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python笔记:操作ndarray元素:访问、删除、插入 的相关文章

随机推荐

  • 【CV with Pytorch】第 10 章 :计算机视觉的可解释人工智能

    大多数机器学习和深度学习模型都缺乏解释和解释结果的方法 由于深度学习模型的动态特性和不断增加的最先进模型 当前的模型评估基于准确度分数 这使得机器学习和深度学习成为黑盒模型 这导致对应用模型缺乏信心 对生成的结果缺乏信任 有多个库可以帮助我
  • 刷题统计(蓝桥杯)

    刷题统计 问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛 他计划周一至周五每天 做 a 道题目 周六和周日每天做 b 道题目 请你帮小明计算 按照计划他将在 第几天实现做题数大于等于 n 题 输入格式 输入一行包含三个整数 a b 和
  • 数据结构基础:2.顺序表。

    顺序表的介绍和实现 一 线性表 1 基本概念 二 顺序表 1 基本概念 分类 1 静态顺序表 分类 2 动态顺序表 2 动态顺序表的功能接口的实现 0 顺序表打印 1 初始化和删除 2 尾插尾删 3 头插头删 4 任意位置插入删除 5 查找
  • 面试题 01.08. 零矩阵

    难度中等 编写一种算法 若M N矩阵中某个元素为0 则将其所在的行与列清零 示例 1 输入 1 1 1 1 0 1 1 1 1 输出 1 0 1 0 0 0 1 0 1 示例 2 输入 0 1 2 0 3 4 5 2 1 3 1 5 输出
  • 并发编程相关面试题(持续更新)

    1 juc包提供了哪些工具 用在什么场景 1 提供了比 synchronized 更加高级的各种同步结构 包括 CountDownLatch CyclicBarrier Semaphore 等 场景 可以实现更加丰富的多线程操作 比如利用
  • TTL反相器、OC门、TS门、推挽输出、开漏输出

    TTL反相器 这是一个TTL反相器 这是经过了很多工程师多种设计最终沉淀出来的电路 这个电路是比较成熟的 我们只需要对这个电路进行解析即可 不需要再去研究当初是如何设计出来的 学过CMOS应该知道 右侧的输出级其实也是个推挽输出 因为长得像
  • 记录一次小问题!ssh脚本打包vue 执行 cnpm run build 无法继续向下走

    问题 ssh脚本打包vue 执行 cnpm run build 无法继续向下走 发现一直停留在 DONE Build complete The dist directory is ready to be deployed INFO Chec
  • JS内存泄漏排查

    定义 内存泄漏 应用程序不再需要的内存 由于某种原因 内存没有返回到操作系统或可用内存池中 原因 1 意外的全局变量 JS 在处理未声明的变量时 对未声明的变量的引用会在全局对象内创建一个新变量 这些全局变量是无法进行垃圾回收的 除非将它们
  • 东方财富四千余支股票2023年度上半年收盘价格走势涨跌可视化分析

    本文数据和图表内容仅供参考 数据仅供参考 数据仅供参考 数据仅供参考 如下是案例A300028的股票2023年收盘价走势及涨跌幅曲线 案例 A股300024 案例 600182走势图 走势分析图谱 原始结果已保存到压缩文件 通过python
  • Python+Selenium练习篇之18-自定义浏览器窗口大小

    本文来学习下如何通过Selenium方法 设置符合不同测试场景浏览器窗口大小 例如 你有一台机器 最大支持1366 768 你完全可以利用这个机器测试不同分辨率下的场景 相关测试脚本代码如下 coding utf 8 import time
  • 区块链技术的应用和数字资产,将会是未来不可阻挡的趋势和潮流

    前言 数字资产的发展 很可能是人类近千年金融史上又一次激动人心的变革 如果让你回到七年前重新选择一次投资机会的话 你可能会选择投资股票 然后坐等15年大牛市资产翻几倍 你也可能会投资房地产 然后坐等16年房地产爆发 资产翻番 但你万万想不到
  • javascript正则表达式学习

    REGEXP对象 javascript通过内置对象RegExp支持正则表达式 有两种方法实例化RegExp对象 1 字面量 var reg bis b var reg2 bis b g 正则规则放在 内 bv表示单词边界 g表示全文搜索 如
  • 树莓派作为客户端与WemosD1作为服务器的无线通信(局域网通信)

    参考 树莓派作为客户端与WemosD1作为服务器的无线通信 局域网通信 作者 图触靓 发布时间 2020 07 26 21 50 39 网址 https blog csdn net bhbhhyg article details 10759
  • 2023年“大湾区杯” AI for Science正式开赛!

    2023年 大湾区杯 粤港澳 AI for Science 科技竞赛 赛题发布 01 AI for Science 赛题设置 本次竞赛设置三大赛道 分别为常规赛道 题号CG2301 CG2312 百度赛道 题号BD2301 BD2308 华
  • SonarQube代码扫描

    一 代码质量测试 1 代码测试工具 SonarQube 官方网站 https www sonarqube org SonarQube 是一个用于代码质量管理的开放平台 通过插件机制 SonarQube 可以集成不同的测试工具 代码分析工具
  • 华为OD机试 C++ 整数编码

    描述 我们想要一种特殊的整数编码方式 让数字小的时候 编码占的空间也小 编码的方法如下 我们每7位组成一部分来编码 在每个字节里 用前7位来存数字 如果后面还有数据 最高的那一位就是1 否则就是0 数据要按小端序保存 也就是说 小的数据部分
  • HTML中所有基本标签

    1 h1 h6 为标题标签 h1 我是一个标题 h1 h2 我是一个标题 h2 h3 我是一个标题 h3 h4 我是一个标题 h4 h5 我是一个标题 h5 h6 我是一个标题 h6 网页显示效果 h1 h6 数字越大 字体越小 且独占一行
  • 无需GPU无需网络“本地部署chatGPT”(更新StableVicuna)

    想当初图像生成从DELL到stable diffusion再到苹果的移动部署过了两三年吧 聊天bot才发展几个月就可以边缘部署了 如果苹果更新silicon npu和运存翻倍 争取apple watch也能本地内置 最快ios18 mac
  • Apache网页优化压缩步骤

    Apache网页与安全优化 Apache网页优化 1 网页压缩 2 网页缓存 Apache安全优化 1 配置防盗链 2 隐藏版本信息 Apache 网页 优化概述 1 在企业中 部署Apache后只采用默认的配置参数 会引发网站很多问题 换
  • Python笔记:操作ndarray元素:访问、删除、插入

    引入 import numpy as np 在此引入一次 下面直接使用 np 访问ndarray元素 x np array 1 2 3 4 5 print print x x print print This is First Elemen