我有一个非常类似于this post的问题。本质上,我从2个2d数组(可能不同的宽度)开始,有一堆行,其中最左边的列作为有效的索引,我想合并组合这两个数组(不像在原来的职位,我们可以假设最左边的列已经在升序)
a = np.array([[1,2], [5,0], [6,4]])
b = np.array([[1,10], [5,20], [6,30]])
会被合并到这个
[[1 2 10]
[5 0 20]
[6 4 30]]
就像原来的港口一样。不过,有两件新的事情我想做。首先,我想通过最左边的值来匹配两个数组,删除其他数组中没有匹配值的任何行。作为一个例子,
a = np.array([[1,2],[3,2], [5,0], [6,4]])
b = np.array([[1,10],[6,30], [5,20], [7,80]])
仍将
[[1 2 10]
[5 0 20]
[6 4 30]]
[3,2]从数组 a 和[7,80]将被忽略数组 b。第二,作为一个单独的函数,我想以类似的方式连接这两个数组,但是每当找不到匹配的值时,我想用np.nan(或其他一些唯一的非数值填充符)创建一个新行
[[1 2 10]
[3 2 np.nan]
[5 0 20]
[6 4 30]
[7 np.nan 80]]
我有两个程序可以做这些事情,但它们效率不高,因为它们会遍历输入数组的每一行(可能宽度不同),有效地按情况将行“压缩”在一起。
有没有很好的有效方法可以用内置的numpy函数来做到这一点?
1条答案
按热度按时间voj3qocg1#
下面是一个如何使用pandas执行此操作的示例:
图纸:
对于第二个示例,选择
how="outer"
:图纸: