从 linspace 开始
t = np.linspace(0,10, 100)
和一个数组
a = np.array([1,2,44,2, 13,...])
我想获得一个与
b
长度相同的数组 linspace
,其元素是数组 a
的 linspace 元素次方(不使用 for 循环)。所以你会有类似的东西
b[0]=np.array([1^t[0], 2^t[0], 44^t[0],...])
b[1]=np.array([1^t[1], 2^t[1], 44^t[1],...])
整个 linspace 等。
由于我不想使用 for 循环,是否可以使用
np.apply_along_axis
对 t
的每个元素执行函数,从而得到我想要的最终 b
?我一直在努力做到这一点,我想是因为我一定不明白 np.apply_along_axis
是如何完全工作的。
使用广播:
如果将形状为
a
或 (N,)
(行向量)的数组 (1, N)
提升为形状为 t
(列向量)的数组 (M, 1)
,numpy 会自动广播它们的形状并返回一个数组形状 (M, N)
,其中该数组的第 i, j
个元素是 a[j]**t[i]
。要将 t
数组表示为列向量,请将其索引为 t[:, None]
,这会在当前维度之后添加一个维度。
a = np.array([1,2,44,2, 13,...])
t = np.linspace(0,10, 100)
b = a**t[:, None]