[英]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.