创建numpy数组,其中第一个和最后一个元素不同,所有其他元素相同

时间:2016-09-06 02:07:27

标签: python numpy scipy

我想创建以下类型的数组

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? 。

1 个答案:

答案 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变大,速度会慢得多。