[英]Filling an array with arrays in numpy?
一個相當簡單的問題,但是我似乎沒有找到任何解決方案:
我正在嘗試使用數組中兩個數組的微分,並將其作為新結果插入到新數組中...我希望代碼能夠澄清這種意圖,即使它不起作用,因為python告訴我它不能結合序列和數組計算...如何解決這個問題? 提前致謝!
MeteorNum = 5
#Coordinate Setup:
XPos = np.random.randint(0, 600, (MeteorNum,1))
YPos = np.random.randint(0, 800, (MeteorNum,1))
XYPos = np.hstack((XPos,YPos))
XYPos = np.vstack((XYPos, XYPos[0]))
print XYPos
#Distances:
r = np.zeros((MeteorNum,MeteorNum))
for i in range(0, MeteorNum):
for x in range(0, MeteorNum):
r[x,i] = (XYPos[x,:] - XYPos[i,:])
r = r*10**5
print r
這是我得到的錯誤:
runfile('C:/Users/Marco DS/Dropbox/1_TUDelft/4Q/AE1205 Python/python codes 2015/bonus assigments/week_5 Gravity simu.py', wdir='C:/Users/Marco DS/Dropbox/1_TUDelft/4Q/AE1205 Python/python codes 2015/bonus assigments')
[[249 660]
[256 605]
[119 423]
[422 398]
[480 504]
[249 660]]
Traceback (most recent call last):
File "<ipython-input-57-4cd9cc29ece0>", line 1, in <module>
runfile('C:/Users/Marco DS/Dropbox/1_TUDelft/4Q/AE1205 Python/python codes 2015/bonus assigments/week_5 Gravity simu.py', wdir='C:/Users/Marco DS/Dropbox/1_TUDelft/4Q/AE1205 Python/python codes 2015/bonus assigments')
File "C:\Users\Marco DS\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 682, in runfile
execfile(filename, namespace)
File "C:\Users\Marco DS\Anaconda\lib\site- packages\spyderlib\widgets\externalshell\sitecustomize.py", line 71, in execfile
exec(compile(scripttext, filename, 'exec'), glob, loc)
File "C:/Users/Marco DS/Dropbox/1_TUDelft/4Q/AE1205 Python/python codes 2015/bonus assigments/week_5 Gravity simu.py", line 37, in <module>
r[x,i] = (XYPos[x,:] - XYPos[i,:])
ValueError: setting an array element with a sequence.
嘗試在容器數組中添加dtype=
:
MeteorNum = 5
#Coordinate Setup:
XPos = nprand.randint(0, 600, (MeteorNum,1))
YPos = nprand.randint(0, 800, (MeteorNum,1))
XYPos = np.hstack((XPos,YPos))
XYPos = np.vstack((XYPos, XYPos[0]))
print XYPos
#Distances:
r = np.zeros((MeteorNum,MeteorNum),dtype=np.ndarray)
for i in range(0, MeteorNum):
for x in range(0, MeteorNum):
r[x,i] = (XYPos[x,:] - XYPos[i,:])
r = r*10**5
print r
編輯
dtype參數指示數組所需的數據類型,例如numpy.int8。 默認值為numpy.float64。
為了消除錯誤,我認為您需要在數組r
增加一個大小為2的維:
r = np.zeros((MeteorNum,MeteorNum,2))
由於XYPos[x,:] - XYPos[i,:]
for循環中的XYPos[x,:] - XYPos[i,:]
的形狀為(2,)
這將返回一個形狀為(5, 5, 2)
5,5,2)的數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.