stMa [] []是一个ndarray(一个7823 * 12矩阵),它的值'类型是numpy.float64。 我原来的代码是:
pagespeed RewriteLevel CoreFilters;
但输出是:
x=[]
for i in range(0,7823):
if stMa[i][6] == 100:
x.append(i)
print(x)
这很奇怪,因为我确信在第七列中必须有一些值为100的项目。 当我修改此代码以检查stMa [i] [6]:
[]
[Finished in 9.0s]
现在,部分输出是:
x=[]
for i in range(0,7823):
if stMa[i][6] == 100:
x.append(i)
print(stMa[i][6])
print(x)
因此在stMa [i] [6]中肯定有一些值为100的项目。然后,为什么列表" x"空?
新问题: 为什么Python可以找到有价值的项目" 0"当我使用
时,在stMa [i] [6]中51.3672727273
100.0
100.0
77.8559585492
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
22.9720207254
[]
[Finished in 9.5s]
答案 0 :(得分:0)
正如其他人所指出的那样,问题很可能是因为你试图检查两个浮点数是否完全相等 - 这是一个危险的游戏。
请尝试使用numpy isclose
方法:
x=[]
for i in range(0,7823):
if np.isclose(stMa[i][6], 100):
x.append(i)
print(x)
或者,使用numpy的where
函数在没有循环的情况下执行此操作:
x = np.where(np.isclose(stMa[:][6], 100))
答案 1 :(得分:0)
确保你的stMa [i] [6]不是str 或者你可以将代码改为`
x=[]
for i in range(0,7823):
if float(stMa[i][6]) == 100.0:
x.append(i)
print(x)