2017-05-05 54 views
1

我试图显示的数值是z[i]^4和小于100000,然后显示满足小于100000的元素数,但我得到索引100是边界轴0与大小100.尽管循环Python显示值小于某个值

我不知道该怎么办。原谅我可怕的措辞。

import numpy as np 

z = np.array(range(100)) 
k = 0 
while k <= 100: 
    k = k+1 
    z[k]=k**4 
    print(z) 
a = sum(i <= 30 for i in z) 
print(a) 
+0

'z1 = sum(i <100000 for i in z)'< - 这是一个语法错误。你的意思是使用列表理解吗? –

+0

我不明白你为什么使用'k <277'。当'k = 101'时,while循环将不起作用,因为'z'只有100个项目。 –

回答

0

如果你想要的是Z到有多达100000i^4值,你可以这样做:

import numpy as np 

z = np.array(range(100)) 
k = 0 
while k < len(z) - 1: 
    k = k+1 
    if k**4 >= 100000: 
     break 
    else: 
     z[k]=k**4 
    print(z) 

我不知道这是计算这个最有效的方式,但我保留了类似的语法,以便您更容易理解这些更改。我这样做的方式:

import numpy as np 

z = np.array(range(100)) 

for number in z: 
    if number**4 <= 100000: 
     z[number]=number**4 
     print(number**4) 
    else: 
     break 

此,除了编辑列表值,也能达到你的“显示值这i^4小于100000”的要求。

Python化溶液使用列表理解:

z = range(100) 
>>> [x**4 for x in z if x**4 <= 100000] 
[0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 14641, 20736, 28561, 38416, 50625, 65536, 83521] 
0

我想你误解的最大索引成numpy的阵列(并且也是列表和元组)是一个更小的numpy的阵列(列表和元组的长度)大小。顺便说一句:range(100)创建一个从0到99的值不是从1到100 ...

试试这个代码:

import numpy as np 

z = np.array(range(100)) 

print(z[0]) 
print(z[99]) 
print(z[100]) 

这给:

0 
99 
Traceback (most recent call last): 
    File "numpyIndex_Cg.py", line 7, in <module> 
    print(z[100]) 
IndexError: index 100 is out of bounds for axis 0 with size 100 

看到自己我是什么谈论。