使用numpy.ndarray添加元素

目录
  • numpy.ndarray添加元素
  • 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]])     

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

(0)

相关推荐

  • numpy向空的二维数组中添加元素的方法

    直接上代码了 x = np.empty(shape=[0, 4], int) x = np.append(x, [[1,2,3,4]], axis = 0) x = np.append(x, [[1,2,3,4]], axis = 0) 这样就添加了两行4列的数据了.注意append里面是两层括号,这个非常重要,如果漏掉了就不是二维数组了,用axis的时候就会报维度不匹配. 以上这篇numpy向空的二维数组中添加元素的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我

  • Python中Numpy ndarray的使用详解

    本文主讲Python中Numpy数组的类型.全0全1数组的生成.随机数组.数组操作.矩阵的简单运算.矩阵的数学运算. 尽管可以用python中list嵌套来模拟矩阵,但使用Numpy库更方便. 定义数组 >>> import numpy as np >>> m = np.array([[1,2,3], [2,3,4]]) #定义矩阵,int64 >>> m array([[1, 2, 3], [2, 3, 4]]) >>> m = n

  • NumPy实现ndarray多维数组操作

    简介 NumPy一个非常重要的作用就是可以进行多维数组的操作,多维数组对象也叫做ndarray.我们可以在ndarray的基础上进行一系列复杂的数学运算. 本文将会介绍一些基本常见的ndarray操作,大家可以在数据分析中使用. 创建ndarray 创建ndarray有很多种方法,我们可以使用np.random来随机生成数据: import numpy as np # Generate some random data data = np.random.randn(2, 3) data arra

  • numpy中的ndarray方法和属性详解

    NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数组,而这个一维数组中每个元素又是一个一维数组.所以这个一维数组就是NumPy中的轴(axes),而轴的数量--秩,就是数组的维数. Numpy库中的矩阵模块为ndarray对象,有很多属性:T,data, dtype,flags,flat,imag,real,size, itemsize,nbyte

  • 使用numpy.ndarray添加元素

    目录 numpy.ndarray添加元素 Numpy:数组(Ndarray)之元素添加.删除和修改 添加元素 删除元素 元素修改 numpy.ndarray添加元素 平常使用的比较多的是list,在list后面添加元素直接是 data_list = [] data_list.append(0) 就可以了. 但是在上次使用这个用法时,报错numpy.adarray没有append这个属性,因此发现data_list这个变量不是一个list,而是numpy.ndarray类型的,因此改为: np.a

  • numpy.ndarray 交换多维数组(矩阵)的行/列方法

    如下所示: >> import numpy as np >> P = np.eye(3) >> P array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]]) 交换第 0 行和第 2 行: >> P[[0, 2], :] = P[[2, 0], :] # P[(0, 2), :] = P[(2, 0), :] >> P array([[ 0., 0., 1.], [ 0., 1., 0.], [ 1.

  • python NumPy ndarray二维数组 按照行列求平均实例

    我就废话不多说了,直接上代码吧! c = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]]) print(c.mean(axis=1))#行 print(c.mean(axis=0))#列 输出为: [ 2.5 5.5 8.5] [ 4. 5. 6. 7.] 以上这篇python NumPy ndarray二维数组 按照行列求平均实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • numpy ndarray 按条件筛选数组,关联筛选的例子

    最近的项目中大量涉及数据的预处理工作,对于ndarray的使用非常频繁.其中ndarray如何进行数值筛选,总结了几种方法. 1.按某些固定值筛选 如下面这段代码从,ndarray中可以筛选出数值等于3的子数组和其在原数组中的索引位置. import numpy as np arr = np.array([1, 1, 1, 134, 45, 3, 46, 45, 65, 3, 23424, 234, 12, 12, 3, 546, 1, 2]) print(np.where(arr==3)) p

  • np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴

    如下所示: >> type(np.newaxis) NoneType >> np.newaxis == None True np.newaxis 在使用和功能上等价于 None,查看源码发现:newaxis = None,其实就是 None 的一个别名. 1. np.newaxis 的实用 >> x = np.arange(3) >> x array([0, 1, 2]) >> x.shape (3,) >> x[:, np.newa

  • numpy ndarray 取出满足特定条件的某些行实例

    在进行物体检测的ground truth boxes annotations包围框坐标数据整理时,需要实现这样的功能: numpy里面,对于N*4的数组,要实现对于每一行,如果第3列和第1列数值相等或者第2列和第0列数值相等,就删除这一行,要返回保留下来的numpy数组 shape M*4 对于numpy数组的操作要尽量避免for循环,因为numpy数组支持布尔索引. import numpy as np a1=np.array( [1,0,1,5] ) a2=np.array( [0,8,5,

  • numpy.ndarray 实现对特定行或列取值

    如下所示: import numpy as np b = [[1,2,0], [4,5,0], [7,8,1], [4,0,1], [7,11,1] ] a=np.array([b]).reshape((5,3)) print(a) c=[1,3,4] # print(a[c]) d=np.nonzero(a[:, 2] == 0) print(d) print(a[d]) 以上这篇numpy.ndarray 实现对特定行或列取值就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多

  • 详解numpy.ndarray.reshape()函数的参数问题

    我们知道numpy.ndarray.reshape()是用来改变numpy数组的形状的,但是它的参数会有一些特殊的用法,这里我们进一步说明一下.代码如下: import numpy as np class Debug: def __init__(self): self.array1 = np.ones(6) def mainProgram(self): print("The value of array1 is: ") print(self.array1) print("Th

  • Numpy ndarray 多维数组对象的使用

    介绍 目前它是Python数值计算中最为重要的基础包,将numpy的数组的对象作为数据交互的通用语,一般我们要充分理解好矩阵计算的原理,这需要你要有一些线性代数的基础知识.在对数据处理.清洗.构造子集.过滤.变换以及其他计算的过程快速的进行向量化计算,后续也会介绍R语言,因为R语言就是一个原生态基于向量化计算的编程语言. Numpy的核心特征之一就是一个N维数组对象--ndarray,这是一个快速灵活的大型数据集容器,可以进行科学数值计算. 代码操作 import numpy as np 导入好

随机推荐