簡體   English   中英

IndexError:創建均勻粒子時數組的索引過多

[英]IndexError: too many indices for array while creating uniform particles

我有這個 function 這里設計用於在給定的 x 和 y 范圍內創建均勻的粒子,這將是 1x2 矩陣。 但是,當我嘗試運行它時,出現以下錯誤。 我覺得有一種更巧妙的方法可以將 x 和 y 值分配到我的粒子矩陣中。 我該如何解決這個問題?

def create_uniform_particles(x_range, y_range, N):
    particles = np.empty((N, 2))
    new_x = uniform(x_range[0], x_range[1], size=(N,1))
    new_y = uniform(y_range[0], y_range[1], size=(N,1))
    for i in range(N):
        particles[i][0] = new_x[i]
        particles[i][1] = new_y[i]
    return particles

#錯誤:

Traceback (most recent call last):
  File "/Users/scottdayton/PycharmProjects/Uncertainty Research/particle.py", line 83, in <module>
    particle_filter(init, sigma, obs, n, trans, sigma0)
  File "/Users/scottdayton/PycharmProjects/Uncertainty Research/particle.py", line 49, in particle_filter
    particles = create_uniform_particles(new_x_range, new_y_range, n)
  File "/Users/scottdayton/PycharmProjects/Uncertainty Research/particle.py", line 8, in create_uniform_particles
    new_x = uniform(x_range[0], x_range[1], size=(N,1))
IndexError: too many indices for array

當我這樣做時,您的 function 代碼似乎是正確的(至少,它對我有用,無需任何修改):

create_uniform_particles([0,1],[2,3],5)

我建議驗證 function 中的變量是否比 create_uniform_particles 高一級(無論您在哪里設置 new_x_range 和 new_y_range)都是您期望的形狀。 由於您為正確傳入的輸入編寫的 function 作品,它可能發生在附近的某個地方。

在分配 x 和 y 方面,您可以使用 hstack 將 new_x 和 new_y 向量連接在一起形成一個數組。 如果您更喜歡它,請在下面嘗試一下。 作為旁注,hstack 的替代方案是 vstack,它將它們彼此連接起來,而不是在您的情況下彼此“相鄰”。

import numpy as np
from numpy.random import uniform

def create_uniform_particles(x_range, y_range, N):
    particles = np.empty((N, 2))
    new_x = uniform(x_range[0], x_range[1], size=(N,1))
    new_y = uniform(y_range[0], y_range[1], size=(N,1))
    return np.hstack([new_x,new_y])

create_uniform_particles([0,1],[2,3],5)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM