第7节,删除numpy数组里的元素

numpy数组里的元素不可以被删除,我们只能通过np.delete函数返回一个删除了指定元素的后的新数组,下面使用一维数组来举例子说明

import numpy as np

old_array = np.array([1, 2, 3, 4, 5, 6])
new_array = np.delete(old_array, [0, 3])
print(new_array)    # [2 3 5 6]
print(old_array)    # [1 2 3 4 5 6]

delete函数第一个参数是ndarray, 第二个参数是一个序列,可以是列表,也可以是元组,里面存储多个索引,函数会返回一个新的数组,新的数组和旧的数组相比,删除掉了指定索引位置的元素。

如果是一个二维数组,能删除指定元素么,这是一个有趣的问题,一个维度为(2, 3) 的数组,我只删除一个元素,会怎样呢?

import numpy as np

old_array = np.array([1, 2, 3, 4, 5, 6])
old_array = np.reshape(old_array, (2, 3))
print(old_array)

new_array = np.delete(old_array, [1])
print(new_array)

程序输出结果

[[1 2 3]
 [4 5 6]]
[1 3 4 5 6]

delete函数将元素2删除了,我猜测这个删除的过程首先是将数组降为成一维数组,然后根据索引进行删除。numpy数组的删除和python的列表相比就不那么灵活了,不过这很好理解,因为numpy数组的功能并不是像列表那样兼容并蓄,无所不包含,ndarray主要是为了数学计算,删除元素就不是一个很常用的操作。

扫描关注, 与我技术互动

QQ交流群: 211426309

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

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