使用numpy.ndarray添加元素

 更新时间:2022年05月23日 10:17:59   作者:聪小聪i  
这篇文章主要介绍了使用numpy.ndarray添加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

numpy.ndarray添加元素

平常使用的比较多的是list,在list后面添加元素直接是

data_list = []
data_list.append(0)

就可以了。

但是在上次使用这个用法时,报错numpy.adarray没有append这个属性,因此发现data_list这个变量不是一个list,而是numpy.ndarray类型的,因此改为:

np.append(data_list, 0)

但是这样改完之后会发现data_list的值并没有发生改变,因此,我改为

data_list = np.append(data_list, 0)

然后由于添加了一个元素,他会告诉你,等号右边是x+1维,左边是x维,不能赋值,然后改为:

new_list = np.append(data_list, 0)

定义了一个新变量new_list用于保存添加完元素的值,后面再接着使用new_list进行操作就可以了。

Numpy:数组(Ndarray)之元素添加、删除和修改

数组也是一个可变类型,可以对数组中的元素进行添加、删除和修改,本文详细介绍了对数组元素的添加和删除的操作,以及这两种操作的方法均已列出。数组元素的修改操作简单,只要对索引和切片掌握,使用索引和切片获取到元素后赋值就可以实现。

添加元素

方法说明
numpy.append()数组追加元素
numpy.insert()数组插入元素

numpy.append()

在数组末尾追加元素。

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

参数说明:

  • arr:接收array_like,需要添加元素的数组。
  • values:接收array_like,追加到末尾的元素,形状必须匹配。arr和values的维度必须相等才能追加
  • axis:接收int,如果未给定轴,则arr和values在使用前都会被展平。

返回值:

  • ndarray,arr的副本。

示例:

# 创建数组a
>>> a = np.arange(1,7).reshape(2,3)
>>> a
array([[1, 2, 3],
       [4, 5, 6]])
# 创建数组b       
>>> b = np.arange(7,10).reshape(1,3) # a,b维度相同才能追加
>>> b  
array([[7, 8, 9]]) 

注意:数组(arr)和追加值(values)的维度必须相同才可以追击,否则会报错:

ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)

不指定轴向时,生成副本,将数组a,b都展平后进行追加。

# 将数组b追加到数组a后
>>> np.append(a, values=b) # 不指定axis时
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9]) 

指定轴向时,根据轴向追加,但是形状必须匹配,指定轴向为行追加时列数必须相等,指定轴向为列追加时,行数必须相等。

>>> np.append(a, values=b, axis=0) # 根据行追加
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9]])

指定轴向时,指定轴向为列时,行数不相同,形状不匹配,无法追加,会报ValueError错!

>>> np.append(a, values=b, axis=1)
ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 2 and the array at index 1 has size 1

numpy.insert()

给定的轴向和指定的索引位置插入值。

numpy.insert(arr, obj, values, axis=None)

参数说明:

  • arr:接收array_like,输入的数组。
  • obj:接收整数或者整数序列,索引位置。
  • values:接收array_like,需要插入数组的值,需要考虑形状。
  • axis:接收整数,轴向。如果未给定轴向数组会被展平。

返回值:

  • ndarray,插入值后的副本。

示例:

>>> a = np.arange(1,7).reshape(2,3)
>>> a
array([[1, 2, 3],
       [4, 5, 6]])
>>> b = np.ones(shape=(2,1))
>>> b
array([[1.],
       [1.]])
       
# 向数组a的行方向,索引为2的行插入数组b,会自动补全
>>> np.insert(a, 2, b, axis=0)
array([[1, 2, 3],
       [4, 5, 6],
       [1, 1, 1],
       [1, 1, 1]])
       
# 向数组a的列方向,索引为2的列插入数组b
>>> np.insert(a, 2, b, axis=1)
array([[1, 2, 1, 1, 3],
       [4, 5, 1, 1, 6]])

删除元素

方法说明
numpy.delete()删掉某个轴的子数组,并返回删除后的新数组

numpy.delete()

返回一个沿轴删除了子数组的新数组。

返回一个沿轴删除了子数组的新数组。

numpy.delete(arr, obj, axis=None)

参数说明:

  • arr:接收array_like,输入数组。
  • obj:接收索引、切片,或者整数构成的数组。
  • axis:接收整数,轴向

返回值:

  • ndarray,删除元素后的数组,是副本。

示例:

>>> a = np.arange(1,7).reshape(2,3)
>>> a
array([[1, 2, 3],
       [4, 5, 6]])
# 轴向为列,删除索引为2的列      
>>> np.delete(a, 2, axis=1)      
array([[1, 2],
       [4, 5]])

对数据进行操作时形状非常重要,如果形状不匹配会引发报错,需要对报错的类型了解,才能在出问题后及时找到原因。除此以外,轴向也是非常重要的,二维数组中:axis=0表示行,axis=1表示列,这个概念非常容易混淆。

元素修改

使用索引切片获取到该位置的元素后使用"="为该位置重新赋值即可。

语法:数组名[索引]=值 或 数组名[切片]=值

示例:

>>> a = np.arange(1,7).reshape(2,3)
>>> a
array([[1, 2, 3],
       [4, 5, 6]])
       
# 使用索引获取到该位置后重新赋值即可修改元素       
>>> a[0, 1] = 100
>>> a
array([[ 1, 100, 3],
       [ 4,  5,  6]])     

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • pandas如何灵活增加新的空字段

    pandas如何灵活增加新的空字段

    这篇文章主要介绍了pandas如何灵活增加新的空字段问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 利用Python实现某OA系统的自动定位功能

    利用Python实现某OA系统的自动定位功能

    这篇文章主要介绍了利用Python实现某OA系统的自动定位功能,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 一文向您详细介绍指令 python -m pip install的用法和功能

    一文向您详细介绍指令 python -m pip install的用法和功能

    通过本文的介绍,我们详细了解了python -m pip install命令的用法和功能,从基本用法到安装特定版本的包、从其他源安装包、升级和卸载包,再到使用requirements.txt管理依赖,我们逐步深入了解了pip的强大功能,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • Python实现读取JSON并导出为表格数据格式

    Python实现读取JSON并导出为表格数据格式

    这篇文章主要为大家详细介绍了如何基于Python语言,读取JSON格式的数据,并将提取的指定内容保存到表格文件中,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • pydantic-resolve嵌套数据结构生成LoaderDepend管理contextvars

    pydantic-resolve嵌套数据结构生成LoaderDepend管理contextvars

    这篇文章主要为大家介绍了pydantic-resolve解决嵌套数据结构生成LoaderDepend管理contextvars的使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2023-04-04
  • python切换hosts文件代码示例

    python切换hosts文件代码示例

    开发或者测试网站程序时,我们很多时候都会遇到多个hosts文件来回切换,windows的hosts文件目录比较深,麻烦,因此,用python写了个小脚本来简化此功能
    2013-12-12
  • pycharm远程连接服务器调试tensorflow无法加载问题

    pycharm远程连接服务器调试tensorflow无法加载问题

    最近打算在win系统下使用pycharm开发程序,并远程连接服务器调试程序,其中在import tensorflow时报错,本文就来介绍一下如何解决,感兴趣的可以了解一下
    2021-06-06
  • Django中多种重定向方法使用详解

    Django中多种重定向方法使用详解

    这篇文章主要介绍了Django中多种重定向方法使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python opencv图像处理基本操作示例详解

    python opencv图像处理基本操作示例详解

    这篇文章主要为大家介绍了python opencv图像处理的基本操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • Jupyter notebook无法导入第三方模块的解决方式

    Jupyter notebook无法导入第三方模块的解决方式

    这篇文章主要介绍了Jupyter notebook无法导入第三方模块的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04

最新评论