第5讲,向numpy数组中新增元素

numpy数组新增元素

这一讲,我将参照列表新增元素的方法讲解如何向numpy数组中新增元素,回顾一下,向列表中新增元素,有以下4个方法

  1. apppend
  2. insert
  3. extend
  4. 数组相加

1. append

列表的append方法会在末尾增加新的元素,ndarray也有类似的操作,只不过该方法不是ndarray的方法,而是numpy的一个函数

import numpy as np

array = np.arange(10)
print(array)        # [0 1 2 3 4 5 6 7 8 9]

array = np.append(array, 11)
print(array)        # [ 0  1  2  3  4  5  6  7  8  9 11]

append函数会返回一个新的ndarray,我将其重新赋值给array变量。

2. insert

列表的insert方法会在指定位置插入一个元素,np.insert可以实现相同的效果

import numpy as np

array = np.arange(10)
print(array)        # [0 1 2 3 4 5 6 7 8 9]

array = np.insert(array, 0, -1)
print(array)        # [-1  0  1  2  3  4  5  6  7  8  9]

3. 列表的extend 和 numpy的concatenate

列表的extend方法可以将其他的序列append到列表的末尾,实现了两个列表的连接,在numpy中,concatenate可以实现相同的效果

import numpy as np

array = np.arange(10)
print(array)        # [0 1 2 3 4 5 6 7 8 9]

array2 = np.array([11, 12])
array = np.concatenate((array, array2))     
print(array)            # [ 0  1  2  3  4  5  6  7  8  9 11 12]

concatenate函数可以将多个ndarray连接到一起返回一个新的数组

4. 数组相加

两个列表可以相加,得到一个新的列表

print([1, 2] + [3, 4])   # [1, 2, 3, 4]

在numpy中,可以对两个ndarray做加法,但加法运算的意义完全不同,numpy对两个数组做加法,并不是将两个数组合并为一个数组,而是将两个数组相对应位置的元素进行相加形成一个新的数组

import numpy as np

array_1 = np.ones(3)
array_2 = np.ones(3)
print(array_1)      # [1. 1. 1.]
print(array_2)      # [1. 1. 1.]

array_3 = array_1 + array_2
print(array_3)      # [2. 2. 2.]

两个ndarray,不仅可以做加法,还可以做减法,乘法,除法,但必须保证两个ndarray的shape是相同的,只要shape相同,不管维度有多少都可以计算,但如果shape不同就会报错

import numpy as np

array_1 = np.ones(2)
array_2 = np.ones(3)
print(array_1)      # [1. 1. ]
print(array_2)      # [1. 1. 1.]

array_3 = array_1 + array_2
print(array_3)      # ValueError: operands could not be broadcast together with shapes (2,) (3,)

array_1的shape与array_2的shape不同,因此不能做加法运算。

5. 总结

append,insert,concatenate都是numpy库的函数,不是numpy数组的方法。使用这些函数向ndarray中新增数据,并不能修改原数组,只是返回一个新的数组

两个ndarray之间做加减乘除运算,必须保证它们的shape是相同的。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案