如何在MicroPython中为ulab ndarray追加元素?
在ulab中实现数组追加元素的方法
ulab作为MicroPython的轻量numpy实现,确实没有内置的append()方法,但可以通过以下几种方式实现类似numpy的追加效果:
1. 使用concatenate()拼接数组
这是最接近numpy append逻辑的方式,通过将单个元素转为数组后与原数组拼接,生成新数组:
import ulab as np # 初始化原数组 a = np.array([1, 2, 3]) # 将单个元素转为ulab数组 new_val = np.array([4]) # 在数组开头追加元素(对应你示例中的np.append(4,a)) a = np.concatenate((new_val, a)) # 如果要在末尾追加,调整拼接顺序即可 # a = np.concatenate((a, new_val))
2. 预分配数组(适合大量ADC数据采集场景)
MicroPython设备内存有限,频繁创建新数组会增加内存开销。如果能预估最终数据量,建议预先分配数组,通过索引赋值的方式添加元素,效率更高:
import ulab as np from machine import ADC # 预先分配足够大的数组(比如最多存100个ADC值) max_samples = 100 adc_data = np.zeros(max_samples) current_pos = 0 # 模拟ADC读取循环 adc = ADC(0) while current_pos < max_samples: # 读取ADC值并转换(根据你的硬件调整转换逻辑) val = adc.read_u16() / 65535.0 # 赋值到数组对应位置 adc_data[current_pos] = val current_pos += 1 # 最终如果需要只保留有效数据,切片即可 adc_data = adc_data[:current_pos]
第一种方法适合少量元素的追加操作,简单直观;第二种更适合持续采集ADC数据的场景,能有效避免内存碎片化问题。
内容的提问来源于stack exchange,提问作者Hamza_712
相关产品推荐
相关产品推荐

