limit_1 = 4
limit_2 = 3
import numpy as np
a = np.zeros([limit_1, limit_2])
b = np.array([1, -6, 7, 3])
c = np.array([3, 2, -1])
print("Original:")
for i in range(limit_1):
for j in range(limit_2):
a[i][j]=np.sqrt(np.absolute(b[i])**2+np.absolute(c[j])**2)
print(a)
您的原始代码:
输出:
以及缩短版:
输出:
解释
首先,我们将向量列
b
拉伸为一个矩阵(然后取它的二次幂):然后我们对行-列
c
执行相同的操作:然后我们把它们相加,计算出根。你知道吗
我只使用了平方幂而不是绝对值,但是如果你仍然需要绝对值,你可以用同样的方法。你知道吗
请注意,计算可以更有效地进行,即在平铺阵列之前计算功率,但这种方法对于本文更为清晰)
您可以使用^{} ,方法是将} 的轴,然后对
b
从1D
扩展到2D
,方法是引入一个新的单态轴作为第二个带有^{c
执行操作。这将简化那里的事情,也实现了矢量化的方法,就像这样-正如在其他答案中所讨论的那样,由于平方运算会产生
non-negative
个数,所以我们可以跳过absolute
运算,得到-注意,绝对值没有平方的意义,因为
n**2
和abs(n)**2
完全相同。你知道吗无论哪种方式,使用列表理解:
相关问题 更多 >
编程相关推荐