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

根据两个向量的差填充numpy矩阵

卫增
2023-03-14
问题内容

是否可以numpy从函数构造矩阵?在这种情况下,该函数特别是两个向量的绝对差:S[i,j] = abs(A[i] - B[j])。一个使用常规python的最小工作示例:

import numpy as np

A = np.array([1,3,6])
B = np.array([2,4,6])
S = np.zeros((3,3))

for i,x in enumerate(A):
    for j,y in enumerate(B):
        S[i,j] = abs(x-y)

给予:

[[ 1.  3.  5.]
 [ 1.  1.  3.]
 [ 4.  2.  0.]]

有一个看起来像这样的构造会很好:

def build_matrix(shape, input_function, *args)

我可以在其中传递带有参数的输入函数,并保留numpy的速度优势。


问题答案:

我建议看看numpy的广播功能:

In [6]: np.abs(A[:,np.newaxis] - B)
Out[6]: 
array([[1, 3, 5],
       [1, 1, 3],
       [4, 2, 0]])

http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html

然后,您可以简单地将函数编写为:

In [7]: def build_matrix(func,args):
   ...:     return func(*args)
   ...:

In [8]: def f1(A,B):
   ...:     return np.abs(A[:,np.newaxis] - B)
   ...:

In [9]: build_matrix(f1,(A,B))
Out[9]: 
array([[1, 3, 5],
       [1, 1, 3],
       [4, 2, 0]])

这也应该比大型阵列的解决方案要快得多。



 类似资料:
  • 问题内容: 我有以下代码: 它创建一个填充零的矩阵。相反,我想知道是否有一种函数或方法可以将它们初始化为s,而方法很简单。 问题答案: 您很少需要在numpy中进行矢量操作循环。您可以创建一个未初始化的数组并立即分配给所有条目: 我已经在这里和Blaenk发布的时间安排了时间: 时序显示优先选择作为更快的替代方案。OTOH,我喜欢numpy的便捷实现,在该实现中您可以同时为整个slice分配值,代

  • 我有两个特征矩阵,它们的行数不同。假设矩阵A比矩阵B有更多的行。矩阵的列包括ID1、ID2、时间片、特征值。由于B中有一段时间没有特征值,因此B中的行数小于A。我需要找到B中缺少的行。然后将具有相关ID1、ID2值的行添加到B中,并且特征为零。

  • 问题内容: 希望有人可以帮助我编写SQL脚本或函数。 我有一个数据源,我希望该功能通过并基于2个指定的列填充相关列。 因此,名称和值列。 例如 因此,脚本/函数应该为数据源的每一行分别在a,b,c,d列中填充值2,1、3、5。 这可能吗?如果是这样,有人可以教我如何做。 问题答案: Oracle安装程序 : 更新声明 : 输出 : Oracle安装程序 : 插入语句 : 输出 :

  • 问题内容: 在数组末尾加零的更Python方式是什么? 在我的实际用例中,实际上我想将数组填充到最接近的1024倍数。例如:1342 => 2048,3000 => 3072 问题答案: 使用mode可以满足您的需要,在这里我们可以传递一个元组作为第二个参数来告诉每个大小要填充多少个零,例如a将在左边填充 2个 零,在右边填充 3个 零: 给出为: 也可以通过将元组的元组作为填充宽度来填充2D n

  • 本文向大家介绍Numpy之将矩阵拉成向量的实例,包括了Numpy之将矩阵拉成向量的实例的使用技巧和注意事项,需要的朋友参考一下 废话不多说,直接上代码吧! 以上这篇Numpy之将矩阵拉成向量的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 所以我有一个 矩阵和一个 向量。我正在尝试编写代码以向量减去矩阵中的每一行。 我目前有一个 循环遍历该循环,并 通过向量减去矩阵中的-th行。 有没有一种方法可以通过向量简单地减去整个矩阵? 谢谢! 当前代码: 这是 矩阵的 第-行, 是向量。我可以这样做,这样就不需要 循环了吗? 问题答案: 在作品,但 只有当轴的联动轴具有相同的尺寸 。这是从矩阵成功减去向量的示例: 之所以可行,是