python - 在 Python 中将 1 x n 数组求 m x 1 数组的所有幂到 m x n 数组

标签 python arrays vector

给定 2 个任意长度的一维数组,我希望将“基数”数组中的每个值提高到“指数”数组中的每个幂以生成一个二维数组/矩阵。

a = [a0, a1, a2, ... , an]
b = [b0, b1, b2, ... , bm]

期望的输出:

[a0^b0, a1^b0, ... , an^b0 ; 
 a0^b1, a1^b1, ... , an^b1 ;
 ...
 a0^bm, a1^bm, ... , an^bm ]

我有 Matlab 背景,可以很容易地对列和行向量完成此操作:

a.^b

如下所述: https://www.mathworks.com/help/matlab/ref/power.html#mw_0a0fb331-989a-442b-ba2c-ede92a343828

然而,在带有 numpy 或 scipy 等的 Python 中,我找不到任何简单的方法来做到这一点。鉴于 Matlab 中的直观性和简单性,我必须假设有一种相当优化的方法可以简单地完成此操作(无需列表理解)。

最佳答案

在Python中,用于指示求幂的符号是**,并且numpy很好地支持等长数组的矢量化求幂:

>>> a = np.array([1, 2, 3, 4, 5])
>>> b = np.array([5, 4, 3, 2, 1])
>>> a**b
array([ 1, 16, 27, 16,  5])

如果您想要获得所需的结果,则必须用列向量对行向量求幂:

>>> a = np.array([[1, 2, 3, 4, 5]]) # Notice now a 2D array, a horizontal vector.
>>> b = np.array([[5, 4, 3, 2, 1]])
>>> a
array([[1, 2, 3, 4, 5]])
>>> b.T
array([[5],
       [4],
       [3],
       [2],
       [1]])
>>> a**b.T
array([[   1,   32,  243, 1024, 3125],
       [   1,   16,   81,  256,  625],
       [   1,    8,   27,   64,  125],
       [   1,    4,    9,   16,   25],
       [   1,    2,    3,    4,    5]])

关于python - 在 Python 中将 1 x n 数组求 m x 1 数组的所有幂到 m x n 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60343586/

相关文章:

python - Abaqus/Python 从 csv 文件读取 MappedField 数据

Python开发-elementtree XML和字符串操作

php - 无循环按键对多维数组的值求和

c++ - 计算并集概率的包含排除原则

c++ - 我的 vector vector 有什么问题?

python - Python 中的浮点精度

python 2.7 : how to find the index of the first letter of each word in a string

arrays - VBA:从数据表创建包含数组的数组的 .txt 文件

javascript - 如何从嵌套的对象数组中获取每个父级的值

python - Matplotlib 箭袋绘图,箭头大小不变