而循环Python显示的值少于某个值

时间:2017-05-05 01:03:00

标签: arrays python-3.x

我尝试在z[i]^4且小于100000的数组中显示值,然后显示满足小于100000的元素数,但我得到的索引100已经输出轴0的边界大小为100。

我不确定该怎么做。原谅我可怕的措辞。

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)

2 个答案:

答案 0 :(得分:0)

如果你想要的是z,i^4的值最高为100000,你可以这样做:

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”的显示值的要求。

使用列表理解的Pythonic解决方案:

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]

答案 1 :(得分:0)

我认为你误解了numpy数组(以及列表和元组)的最大索引是numpy数组(list和tuple length)的一个。顺便说一下: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

看看自己在谈论什么。