python - 使用 for 和 if 语句比较数组元素

标签 python arrays numpy matplotlib

我有以下代码:

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/

相关文章:

python - NumPy:从字符串列表加载异构数据列

Python - 从文件中获取列迭代器(无需读取整个文件)

python - 使用 python 3.3 请求

javascript - 使用 Array.prototype.map(callback, index) 在模板文字中索引 [data-attribute]?

python - Numpy:有效地将所有满足条件的像素设置为黑色

javascript - 从对象数组返回单个记录

javascript - 检查 $(this) 是否有在数组中指定类或 id 的 parent

python - 如何在 matplotlib 中制作 3D 散点图

python - 从字典 python 中删除 'Counter'

Python 美丽汤语法