在NumPy数组中插入一个新轴在Python中把一个拉盖尔数列加到另一个数列上

  • Post category:Python

添加新轴:

在NumPy中,可以使用np.newaxis在数组中添加新轴。新轴可以在索引中表达为None,即“:,None,:”,它代表一个长度为1的轴。例如,如果我们有一个形状为(3,4)的数组,我们想要在第二个维度上添加一个新轴,可以使用以下代码:

import numpy as np
arr = np.random.rand(3,4)
new_arr = arr[:, np.newaxis, :]

此时,new_arr的形状变为(3,1,4)。新轴被插入到数组中的第二个维度上,并且长度为1。

添加拉格朗日数列:

下面是两个示例,演示如何向另一个数组添加拉格朗日数列。

# 示例1:向一维数组添加拉格朗日数列
import numpy as np
from scipy.special import lgl
x = np.linspace(-1,1,5)  # 原始数组
y = np.array([0,1,2,3,4])  # 另一个数组
xx = np.linspace(-1,1,10)  # 拉格朗日数列
yy = np.zeros((xx.size, *y.shape))  # 最后的新数组

for i in range(y.size):
    coef = np.polyfit(x, y[i], x.size-1)
    yy[:,i] = np.polyval(coef, xx)

new_y = np.concatenate((y, yy), axis=0)
print(new_y)

# 示例2:向二维数组添加拉格朗日数列
x = np.linspace(-1,1,5)  # 原始数组
y = np.random.rand(5,3)  # 另一个数组
xx = np.linspace(-1,1,10)  # 拉格朗日数列
yy = np.zeros((xx.size, *y.shape[1:]))  # 最后的新数组

for i in range(y.shape[1]):
    coef = np.polyfit(x, y[:,i], x.size-1)
    yy[:,i] = np.polyval(coef, xx)

new_y = np.concatenate((y, np.transpose(yy, [1,0,2])), axis=0)
print(new_y)

以上示例中,我们使用SciPy的lgl函数生成拉格朗日数列xx,并将其插入到原始数组x中。然后,我们使用np.polyfit函数计算了拉格朗日插值法的系数,即多项式拟合系数。最后,我们使用np.polyval函数计算在新的拉格朗日数列下的插值结果。最后,我们使用np.concatenate函数将新数组与原数组连接起来。其中,axis参数指定了连接的维度。

通过以上方法,我们可以简单、快速地在NumPy数组中添加新轴和拉格朗日数列,用于数组的拓展和数据的扩充。