Мне недавно пришлось изменить набор данных, который я использовал для контурных графиков. Я использовал все значения в диапазоне от 3 до 16, но теперь я хочу использовать только ДАЖЕ значения в диапазоне от 4 до 18. Ниже приведен код:
c = np.linspace(0.01, 1, 10)
for ratio_shear in c:
s = 1
xlist = np.linspace(4, 18, 8)
ylist = np.linspace(0.01, 1, 100)
n, ratio_beams = np.meshgrid(xlist, ylist)
alpha = 360 / n
r = (s / (2 * (np.sin((np.pi / n)))))
apothem = s / (2 * np.tan(np.radians(180 / n)))
for idx1 in range(len(xlist)):
LIb = np.empty((int(idx1)))
LIs = np.empty((int(idx1)))
for idx2 in range(1, int(idx1 + 1)):
if (idx1 % 2) == 0:
LIb[idx2 - 1] = abs((r[0, idx1]) * ((np.cos(((np.radians((alpha[0, idx1]) / 2))) + ((idx2 - 1) * (np.radians(alpha[0, idx1])))))))
#LIb[idx2 - 1] = abs((r[0, idx1 - xlist.astype(int)[0]]) * ((np.cos(((np.radians((alpha[0, idx1 - xlist.astype(int)[0]]) / 2))) + ((idx2 - 1) * (np.radians(alpha[0, idx1 - xlist.astype(int)[0]]))))))) # change i if we need
else:
LIb[idx2 - 1] = 0
if (idx1 % 2) == 0:
LIs[idx2 - 1] = abs(apothem[0, idx1] * np.cos(((idx2 - 1) * (np.radians(alpha[0, idx1])))))
# LIs[idx2 - 1] = abs(apothem[0, idx1 - xlist.astype(int)[0]] * np.cos(((idx2 - 1) * (np.radians(alpha[0, idx1 - xlist.astype(int)[0]])))))
else:
LIs[idx2 - 1] = 0
LIbSquared = LIb ** 2
LIsSquared = LIs ** 2
LIbSum[idx1 - 3] = np.sum(LIbSquared)
LIsSum[idx1 - 3] = np.sum(LIsSquared)
Мне нужно это l oop чтобы получить только значения LIb и LIs Sum только для четных значений n, данного диапазона (4, 18, 7). Мой контурный график отображает значения n, которые являются нечетными. Вот код для одного из контурных графиков:
X = n
Y = ratio_beams
Z = BeamRatio_P
fig, ax = plt.subplots()
ax.set_title('Pcr_B/p Graph')
plt.xlabel('n value')
plt.ylabel('ratio beams')
plt.contourf(X, Y, np.log10(Z))
plt.colorbar()
plt.savefig(str('StrainEnergy_BeamRatioP_RatioShear=' + str(ratio_shear).replace('.', ',')[0:4]))
Спасибо за помощь