获取numpy数组中某个元素或者满足某个条件的元素的index索引

import numpy as np
a=[1,2,3,4]
b=np.array(a)
print('b==2:')
print(np.argwhere(b==2))
print('b>2:')
print(np.argwhere(b>2))

输出如下所示:

b==2:
[[1]]
b>2:
[[2]
 [3]]

使用np.argwhere() 加条件,即可得到满足条件的索引。(当数组较大时慎用此方法,因为速度较慢)

### 向NumPy数组中添加元素 对于向NumPy数组中添加元素的操作,最佳实践通常不是简单地像列表那样追加单个元素。由于NumPy数组在创建时具有固定的大小,频繁改变其尺寸会降低效率。因此,推荐的做法是在构建最终数据结构之前收集所有要加入的数据,之后一次性转换成NumPy数组。 然而,在某些情况下确实需要动态增加数组的内容,可以考虑以下几种方式: #### 方法一:使用`np.append` 虽然这不是最高效的方式,但对于少量元素的添加仍然适用。需要注意的是每次调用此函数都会创建一个新的数组对象并复制原有数据加上新增部分。 ```python import numpy as np a = np.array([1, 2, 3]) b = np.append(a, [4]) # 添加单一元素 c = np.append(a, [[7], [8]], axis=0) # 沿着指定轴连接两个数组 print(b) # 输出: [1 2 3 4] ``` 这种方法适用于偶尔添加几个新值的情况[^1]。 #### 方法二:利用Python列表作为缓冲区 如果预期会有大量的连续写入操作,则先在一个普通的Python列表里累积这些数值,最后再将其转化为NumPy数组可能是更好的选择。这样做的好处是可以避免多次内存分配带来的开销。 ```python temp_list = [] for i in range(5): temp_list.append(i * 2) final_array = np.array(temp_list) print(final_array) # 输出: [0 2 4 6 8] ``` 这种方式特别适合于事先不知道确切数量的情况下逐步积累数据。 #### 方法三:预分配大容量数组并通过索引赋值 当已知大致所需存储空间时,预先定义好足够大的空白区域,并通过直接设置特定位置上的值来完成更新过程。这样做不仅减少了不必要的中间状态变化,而且有助于更好地控制程序逻辑流程。 ```python size_estimate = 10 pre_allocated = np.zeros(size_estimate) index_to_update = 3 new_value = 99 if index_to_update < size_estimate: pre_allocated[index_to_update] = new_value print(pre_allocated) # 假设只修改了一处,其余保持默认零初始化 ``` 这种策略尤其适用于那些可以在运行前估计到大概规模的应用场景。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值