在 Python 中使用查找表

新手上路,请多包涵

我正在使用 python 来自动化压电液滴发生器。对于脉冲长度的每个值,将有一个合适的电压值来产生信号以释放液滴。该电压值在每次运行中不断变化(例如,+ 或 -10)。所以我有一个数据库,其中包含每个脉冲长度的不同电压值。

我想知道一些关于在 python 中使用查找表的事情。对于我的任务,我想选择一个从 15 到 70 的随机脉冲长度,并将此值与数据库中的特定电压范围相关联(例如:对于值 17,我希望程序访问查找表并返回电压范围 35-50)。是否可以取整个范围而不仅仅是一个值。因为,我是编码和 python 的新手,所以我不太确定。欢迎任何帮助。谢谢你。

原文由 Vishvachi Sinha 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 521
2 个回答

由于我们没有得到关于哪些范围应该与哪些值相关联的任何进一步信息,我假设您会将我的答案转移到您自己的问题上。

查找表在 python 中称为 dictionary 。它们由大括号表示。

简单的例子:

 myDict = {1: [1, 2, 3, 4, 5],
          2: [2, 3, 4, 5, 6],
          3: [3, 4, 5, 6, 7]}

在这里,您创建了一个包含三个条目的字典:1、2、3。每个条目都有一个与之关联的范围。在示例中它是逻辑 range(i, i+5)

你查询你的“查找表”就像一个列表:

 print(myDict[2])
>>> [2, 3, 4, 5, 6]

(请注意 [2] 不是索引 #2,但实际上是值 2 您正在寻找)

通常您不想手动创建字典,而是希望自动构建它。例如,您可以通过使用 dictzip 将两个相同长度的列表组合成字典:

 indices = range(15, 76) # your values from 15 to 75
i_ranges = [range(i, i+5) for i in indices] # this constructs your ranges
myDict = dict(zip(indices, i_ranges)) # zip together the lists and make a dict from it
print(myDict[20])
>>> [20, 21, 22, 23, 24]

顺便说一句,您不限于整数和列表。你也可以这样:

 myFruits = {'apples': 20, 'cherries': 50, 'bananas': 23}
print(myFruits['cherries'])
>>> 50

原文由 offeltoffel 发布,翻译遵循 CC BY-SA 4.0 许可协议

numpy 是你要走的路,如果你可以把你的数据库放在一个大数组中(如果你的数据库不是太大)

举个简单的例子:

 import numpy

my_array = numpy.zeros([3, 8], dtype=numpy.uint8)

这将输出以下数组:

 array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

从那里您可以使用以下行访问数组:

 my_array[0]

它将输出第一行:

 array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

你可以对列做同样的事情:

 my_array[:, 0]

它将输出第一列:

 array([ 0.,  0.,  0.])

使用字典也是一个好方法。

然而,numpy 是用 C 编写的,比 python 集成函数快得多。它提供了许多有用的功能,如均值、标准差、where(检查数组中某个值的位置)

您还可以使用 numpy 创建更复杂的数组并轻松探索它们

原文由 Mael Abgrall 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题