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

Python如何获取无逗号分隔的传感器数据列表的最后一个元素

首先明确:你看到的无逗号分隔的「列表」是numpy数组的打印输出格式,你调用device.read()返回的是形状为(nSamples, 5 + nChannels)的二维numpy数组,不是普通Python列表,因此用普通列表的操作方法会达不到预期。

下面分两种使用场景给出解决方案:

场景1:实时采集时直接获取当前采样的模拟量值

如果你的采样参数nSamples设置为1(从你给出的print输出[[8 1 1 0 0 0]]可以判断你当前nSamples设为1),直接用numpy索引取值即可:

sampledata = device.read(nSamples)
# 取第一个样本的最后一个元素,即你需要的模拟量值
analog_value = sampledata[0, -1]

如果nSamples设置为大于1的数值,要批量获取所有采样的模拟量值,用以下写法:

# 提取所有样本的最后一个字段,得到一维数组
all_analog_values = sampledata[:, -1]
# 取第N个样本的模拟量,索引从0开始计数
single_analog_val = all_analog_values[N]

另外你当前的CSV存储代码有问题,直接把二维numpy数组传给writer.writerow会导致每行存储的是数组对象而非拆分的字段值,建议修改存储代码:

# 把原来的 writer.writerow(sampledata) 替换为下面的代码
for row in sampledata:
    writer.writerow(row.tolist())

场景2:读取已存储的CSV文件获取最后一个元素

情况A:已按上面的方法修改存储代码后生成的CSV

直接用csv模块读取即可:

import csv
analog_values = []
with open('/home/pi/pywork/EDAdata.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        # 转成整数后取最后一个元素
        analog_val = int(row[-1])
        analog_values.append(analog_val)

情况B:未修改存储代码前生成的旧CSV(每行是[ 0 1 1 0 0 516]格式的字符串)

先处理字符串再取值:

analog_values = []
with open('/home/pi/pywork/EDAdata.csv', 'r') as f:
    for line in f:
        # 去除前后的括号、空白符,按空白字符分割得到所有字段
        parts = line.strip().strip('[]').split()
        # 转成整数后取最后一个元素
        analog_val = int(parts[-1])
        analog_values.append(analog_val)

内容的提问来源于stack exchange,提问作者AKR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:36:07