当前位置: 首页 > 面试题库 >

NumPy中的SQL join或R的merge()函数?

黄毅
2023-03-14
问题内容

有没有一种实现可以根据其键将两个数组连接在一起?说到哪一种,是将密钥存储在NumPy列之一中的规范方法(NumPy没有’id’或’rownames’属性)?


问题答案:

如果只想使用numpy,则可以使用 结构化数组
lib.recfunctions.join_by函数(请参见http://pyopengl.sourceforge.net/pydoc/numpy.lib.recfunctions.html)。一个小例子:

In [1]: import numpy as np
   ...: import numpy.lib.recfunctions as rfn
   ...: a = np.array([(1, 10.), (2, 20.), (3, 30.)], dtype=[('id', int), ('A', float)])
   ...: b = np.array([(2, 200.), (3, 300.), (4, 400.)], dtype=[('id', int), ('B', float)])

In [2]: rfn.join_by('id', a, b, jointype='inner', usemask=False)
Out[2]: 
array([(2, 20.0, 200.0), (3, 30.0, 300.0)], 
      dtype=[('id', '<i4'), ('A', '<f8'), ('B', '<f8')])

另一种选择是使用 pandas
(文档)。我没有经验,但是它提供了比标准numpy更强大的数据结构和功能,“使使用“关系”或“标签”数据既简单又直观”。而且它当然具有联接和合并功能(例如,请参见http://pandas.sourceforge.net/merging.html#joining-
on-a-key
)。



 类似资料:
  • 中的值匹配功能非常有用。但据我理解,它不足以支持二维或高维输入。 例如,假设和是相同列数的矩阵,我想将的行与的行进行匹配。“R”函数调用不这样做。列表的输入也存在同样的不足。 我已经实现了我自己的版本,名为(附在下面),但我想知道您对此任务的解决方案是什么。

  • 问题内容: 是否有Python函数类似于R中的expand.grid()函数?提前致谢。 (编辑)以下是此R函数的说明和示例。 (EDIT2)下面是rpy包的示例。我想获得相同的输出对象,但不使用R: 编辑02/09/2012: 我真的 迷上 了Python。Lev Levitsky在他的答案中给出的代码对我不起作用: 但是,似乎已安装itertools模块(键入不会返回任何错误消息) 问题答案:

  • 有没有类似于R中expand.grid()函数的Python函数?提前谢谢。 (编辑)下面是此R函数的说明和示例。 下面是rpy包的示例。我想得到相同的输出对象,但不使用R: 编辑02/09/2012:我真的迷路了Python。列夫·列维斯基在回答中给出的代码对我不起作用: 但是,似乎已安装itertools模块(从itertools导入中键入不会返回任何错误消息)

  • NumPy 提供了很多统计函数,例如对数组求和、用于从数组中查找最小元素,最大元素,百分位标准差和方差等。 常用的统计函数如下: 函数 说明 sum 对数组中的全部或沿着轴向的元素求和。 mean、median 求数组的算术平均值、中位数 std、var 分别为标准差和方差 min、max 最小值和最大值 argmin、argmax 分别为最小和最大元素的索引 cumsum 所有元素的累计和 cu

  • 我有两个不同长度的向量,每个向量包含0到50之间的数字。有些数字在向量中不包含,其他数字可能出现多次。 我想画一条线,显示每个数字在每个向量中包含的频率,即数字的频率。 如果我将中断设置为每个可能的数字之间,我可以绘制显示频率的直方图: 我知道有一个经验累积分布函数(),它会形成一个S形;但我想要的是一个非累积的经验分布函数,它将导致类似阶梯形钟形曲线的结果,类似于直方图的轮廓。 我能得到的最接近

  • 本文向大家介绍SQLServer中merge函数用法详解,包括了SQLServer中merge函数用法详解的使用技巧和注意事项,需要的朋友参考一下 Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。 M