#arrays #python-3.x #list-comprehension #numpy-slicing
#массивы #python-3.x #понимание списка #numpy-нарезка
Вопрос:
У меня есть 2 списка с координатами x и y, которые генерируются независимо, с a/h
количеством точек между 0
и a
.
x = np.linspace(0, a, a/h)
y = np.linspace(0, d, d/h)
когда a/h
такое, что 0
увеличивается до a
с шагом в целые числа, т.е. [0,1,2,..,a]
. Это приятно, потому что тогда количество элементов в списке можно использовать в качестве индексов. И в результате я обычно могу создать сетевую сетку такой, что с ней может быть связан третий список V1
.
X, Y = plt.meshgrid(x, y)
def potential(V1):
return V1[X, Y]
где potential(V1)
теперь V1
соответствует сеточной сетке [x, y]
. Однако я выполняю задание, в котором от меня требуется исследовать, как размеры шага влияют на мою проблему. В результате, если бы у меня был размер шага нецелых чисел от 0
до a
, т. е. [0, 0.5, 1,...,a]
Теперь я не могу делать то, что я сделал выше, поскольку индексы теперь нецелые. Выдает ошибку
IndexError: arrays used as indices must be of integer (or boolean) type
Как я могу это исправить, чтобы я не полагался на значение самого элемента в качестве индекса элементов, так что, если для списка 0.25
был размер шага 0
между a
X
для, скажем, т.е.
X = [0, 0.25, 0.75. 1.0] or x = np.linspace(0,1,4)
такое, чтобы я мог иметь
x[0] = 0 corresponds to V[0]
x[1] = 0.25 corresponds to V[1]
x[2] = 0.75 corresponds to V[2]
x[3] = 1 corresponds to V[3]
?