我有以下代碼:
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 陳述句中的條件,則程式運行/
uj5u.com熱心網友回復:
您的問題是您正在迭代陣列的元素,但隨后嘗試使用該元素作為索引。當您到達 的最后一個元素時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")
根據您的實際目標,更 Python 的方法可能是串列理解:
res = ["Hi" if i > 4 else "Hello" for i in ax]
uj5u.com熱心網友回復:
我運行它如下。
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 i>4:
print("Hi")
else:
print("Hello")

uj5u.com熱心網友回復:
使用這種迭代模式,我建議使用np.where()而不是顯式for回圈:
import numpy as np
ax = np.array([1, 2, 3, 4, 5, 6])
result = np.where(ax > 4, "Hi", "Hello")
print("\n".join(result))
這輸出:
Hello
Hello
Hello
Hello
Hi
Hi
uj5u.com熱心網友回復:
x 陣列元素不是索引,因此 y[x[i]] 可能超出范圍。
您可以使用
for index, value in enumerate(x):
y[index] # This is correct
x[value] # This can produce same error :D
uj5u.com熱心網友回復:
你的迭代是錯誤的,即使是一個串列。為了顯示:
In [321]: alist = ['ab','cd','ef']
In [322]: for i in alist:
...: print(i)
...:
ab
cd
ef
迭代變數i是串列的一個元素,而不是索引。
In [323]: i
Out[323]: 'ef'
In [324]: alist[i]
Traceback (most recent call last):
Input In [324] in <cell line: 1>
alist[i]
TypeError: list indices must be integers or slices, not str
將其用作索引沒有任何意義。在您的情況下,直到您點擊 ,問題才變得明顯6,但ax[i]甚至在此之前就錯了。
我在許多新手問題中都看到了這個錯誤,想知道為什么?只是粗心大意,還是有一些誤導人們的教程?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/453520.html
標籤:Python 数组 麻木的 matplotlib
上一篇:列印表示整個變數
