添加新轴:
在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数组中添加新轴和拉格朗日数列,用于数组的拓展和数据的扩充。