2024-05-17 05:26:52 发布
网友
我有一个从.csv文件中读取的二维Numpy数据数组。每一行代表一个数据点,最后一列包含一个“key”,这个key与另一个Numpy数组中的“key”唯一对应,这个数组就是“lookup table”。
将第一个表中的行与第二个表中的值进行匹配的最佳方式(最新)是什么?
在特殊情况下,当索引可以从键计算时,可以避免使用字典。当可以选择查找表的键时,这是一个优势。
对于Vebjorn Ljosa的例子:
查找:
>>> lookup[a[:,0]-1, :] array([[ 1. , 3.14 , 4.14 ], [ 1. , 3.14 , 4.14 ], [ 2. , 2.71818, 3.7 ], [ 3. , 42. , 43. ]])
合并:
>>> np.hstack([a, lookup[a[:,0]-1, :]]) array([[ 1. , 11. , 1. , 3.14 , 4.14 ], [ 1. , 12. , 1. , 3.14 , 4.14 ], [ 2. , 21. , 2. , 2.71818, 3.7 ], [ 3. , 31. , 3. , 42. , 43. ]])
一些示例数据:
import numpy as np lookup = np.array([[ 1. , 3.14 , 4.14 ], [ 2. , 2.71818, 3.7 ], [ 3. , 42. , 43. ]]) a = np.array([[ 1, 11], [ 1, 12], [ 2, 21], [ 3, 31]])
在查找表中从键到行号生成词典:
mapping = dict(zip(lookup[:,0], range(len(lookup))))
然后你就可以用字典来配行了。例如,如果您只想加入表:
>>> np.hstack((a, np.array([lookup[mapping[key],1:] for key in a[:,0]]))) array([[ 1. , 11. , 3.14 , 4.14 ], [ 1. , 12. , 3.14 , 4.14 ], [ 2. , 21. , 2.71818, 3.7 ], [ 3. , 31. , 42. , 43. ]])
在特殊情况下,当索引可以从键计算时,可以避免使用字典。当可以选择查找表的键时,这是一个优势。
对于Vebjorn Ljosa的例子:
查找:
合并:
一些示例数据:
在查找表中从键到行号生成词典:
然后你就可以用字典来配行了。例如,如果您只想加入表:
相关问题 更多 >
编程相关推荐