You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:24:57