我有以下代码:
import math
import numpy
import numpy as np
import numpydoc
import matplotlib
x= [1,2 ,3 ,4 ,5 ,6]
y= [5,6,7 ,8 ,9 ,10 ]
ax=np.array(x)
ay=np.array(y)
for i in ax:
if ax[i]>4:
print("Hi")
else:
print("Hello")
我收到此错误:
IndexError: index 6 is out of bounds for axis 0 with size 6
我希望代码检查数组的每个值,如果满足 if 语句中的条件,则程序运行/
最佳答案
您的问题是您正在迭代数组的元素,但随后尝试使用该元素作为索引。当您到达 ax
的最后一个元素时,您正在尝试执行 ax[6]
,超出 ax
大小的范围.
您应该选择其中之一,即:
for i in ax:
if i > 4:
print('Hi')
else:
print('Hello')
或
for i in range(len(ax)):
if ax[i] > 4:
print("Hi")
else:
print("Hello")
根据您的实际目标,更Pythonic的方法可能是列表理解:
res = ["Hi" if i > 4 else "Hello" for i in ax]
关于python - 使用 for 和 if 语句比较数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71695968/