Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
索引49超出大小为49 python numpy的轴0的界限_Python_Debugging - Fatal编程技术网

索引49超出大小为49 python numpy的轴0的界限

索引49超出大小为49 python numpy的轴0的界限,python,debugging,Python,Debugging,所以我完全迷路了。 我已经使用 长度=零(粒子数,数据类型=对象) 粒子数=51 打印len(长度)时,返回52 我正在链接错误: 索引49超出大小为49的轴0的界限 这是一个for循环集合 for leng in range(num_particles): x_squared = (r[particle,0] - x[leng])**2 y_squared = (r[particle,1] - y[leng])**2 distance = sqr

所以我完全迷路了。 我已经使用 长度=零(粒子数,数据类型=对象) 粒子数=51 打印len(长度)时,返回52

我正在链接错误: 索引49超出大小为49的轴0的界限

这是一个for循环集合

for leng in range(num_particles):
        x_squared = (r[particle,0] - x[leng])**2
        y_squared = (r[particle,1] - y[leng])**2
        distance = sqrt(x_squared + y_squared)
        lengths[leng]=distance
整个代码如下:

def cdf(r, S, dr, dim):
from numpy import zeros, sqrt, where, pi, mean, arange, histogram, absolute, sort, delete, nonzero, amin, empty
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning) 
num_particles  = len(r)
rMax           = S/2.0;
edges          = arange(0., rMax + dr, dr)
num_increments = len(edges) - 1
radii          = zeros(num_increments + 1)
numberDensity  = len(r) / S**dim

void_particles = zeros(3, dtype=object, order='C')

x = zeros(num_particles)

y = zeros(num_particles)

n=num_particles

lengths = zeros(n + 1, dtype=object)

print(lengths)

print (num_particles)

print(len(lengths))

for pos in range(num_particles):
    x[pos]=r[pos,0]
    y[pos]=r[pos,1]

for particle in range(num_particles):

    for leng in range(num_particles):
        x_squared = (r[particle,0] - x[leng])**2
        y_squared = (r[particle,1] - y[leng])**2
        distance = sqrt(x_squared + y_squared)
        lengths[leng]=distance

    lengths = lengths[ lengths != np.min(lengths)]
    void_particles[0] = r[particle]
    void_particles[1] = r[where(lengths == amin(lengths))]
    lengths = lengths[ lengths != np.min(lengths)]
    void_particles[2] = r[where(lengths == amin(lengths))]

IndexError                                Traceback (most recent call last)
<ipython-input-34-74dbdb61732e> in <module>
----> 1 a=cdf(n_data, box_length, res_dr, 2)
2 print(a)

<ipython-input-33-411d9850684e> in cdf(r, S, dr, dim)
 36             y_squared = (r[particle,1] - y[leng])**2
 37             distance = sqrt(x_squared + y_squared)
---> 38             lengths[leng]=distance
 39 
 40         lengths = lengths[ lengths != np.min(lengths)]

IndexError: index 49 is out of bounds for axis 0 with size 49
def cdf(右、右、右、dim):
从numpy导入零、sqrt、where、pi、mean、arange、直方图、绝对值、排序、删除、非零、amin、空
进口警告
警告。过滤器警告(“忽略”,类别=弃用警告)
粒子数=len(r)
rMax=S/2.0;
边缘=间距(0,rMax+dr,dr)
num_增量=len(边)-1
半径=零(数值增量+1)
数字密度=长度(r)/S**尺寸
void_particles=0(3,dtype=object,order='C')
x=零(粒子数)
y=零(粒子数)
n=粒子数
长度=零(n+1,数据类型=对象)
打印(长度)
打印(粒子数)
打印(长度)
对于范围内的位置(粒子数):
x[pos]=r[pos,0]
y[pos]=r[pos,1]
对于范围内的粒子(粒子数):
对于范围内的长度(粒子数):
x_平方=(r[粒子,0]-x[长度]**2
y_平方=(r[粒子,1]-y[长度]**2
距离=sqrt(x_平方+y_平方)
长度[长度]=距离
长度=长度[长度!=np.min(长度)]
void_粒子[0]=r[粒子]
void_粒子[1]=r[其中(长度==amin(长度))]
长度=长度[长度!=np.min(长度)]
void_粒子[2]=r[其中(长度==amin(长度))]
索引器回溯(最后一次最近调用)
在里面
---->1 a=cdf(n_数据、方框长度、分辨率、2)
2印刷品(a)
在cdf中(r、S、dr、dim)
36 y_平方=(r[粒子,1]-y[长度]**2
37距离=sqrt(x_平方+y_平方)
--->38长度[长度]=距离
39
40长度=长度[长度!=np.min(长度)]
索引器:索引49超出大小为49的轴0的界限

以下表达式缩短了数组:

lengths = lengths[ lengths != np.min(lengths)]

因此,随后的迭代——假设它仍然有
num_particles
元素——由于尝试越界访问而失败

在每次运行外部循环时,都不会重新初始化
长度。
然后在循环内部,当您执行以下操作时:
length=length[长度!=np.min(长度)]

您正在将
长度
数组缩短为小于其原始大小。然后,下一次执行循环时,它没有您预期的那么大,超出了界限。

您在哪一行得到错误?Python索引是以零为基础的。第一个元素是
[0]
,因此索引
[49]
实际上是第五十个元素。在问题中,将完整的回溯显示为格式正确的文本。什么是
r
?我的猜测是,无效访问是从r读取的,而不是从x或y读取的,但是如果不知道它是什么,很难判断。r是一个x和y坐标的数组,所以在这一部分,我试图从给定粒子中找到最短的长度。还有什么方法可以在不删除它们的情况下获取三个最短长度索引呢?因此,在这一部分中,我试图从给定粒子中找到最短长度。还有什么方法可以在不删除它们的情况下获取三个最短长度索引?@daddydevidito
sorted(length)[:3]