我想创建以下类型的数组
N = 5 # size of the array
eta = 2
a00 = 1 # first element of array
a0N = 3 # last element of array
# all entries should be 'eta' except the first and the last one
diag = [a00, eta, eta, eta, a0N]
我知道如何创建具有eta作为其所有条目的数组,如下所示。
diag = np.zeros(N) + eta
我能否创造出我想要的东西
np.zeros(N)
或者我是否必须使用更低级别的构造函数,例如numpy.ndarray
? 。
答案 0 :(得分:3)
我不知道这种数组的内置方法。这是一种非常标准的做法。
N = 5 # size of the array
eta = 2
a00 = 1 # first element of array
a0N = 3 # last element of array
# make a vector of 'etas', then change the first and last element
diag = np.ones(N,)*eta
diag[0] = a00
diag[-1] = a0N
另一种解决方法是列出所需数组中的元素。然后你可以使用np.array将它转换为数组,如下所示:
list_diag = [a00] + [eta for i in range(N-2)] + [a0N]
diag = np.array(list_diag)
注意:后一种解决方案可能看起来很可爱,但随着N变大,速度会慢得多。