Python 用numpy中的数组填充数组?

Python 用numpy中的数组填充数组?,python,arrays,numpy,Python,Arrays,Numpy,这是一个相当简单的问题,但我似乎找不到任何解决办法: 我正在尝试使用一个数组中两个数组的微分,并将其作为新结果插入到一个新数组中。。。我希望代码能够澄清这个意图,即使它不起作用,因为python告诉我它不能将序列与数组计算结合起来。。。我怎样才能绕过这个问题呢?提前谢谢 MeteorNum = 5 #Coordinate Setup: XPos = np.random.randint(0, 600, (MeteorNum,1)) YPos = np.random.randint(0, 800,

这是一个相当简单的问题,但我似乎找不到任何解决办法:

我正在尝试使用一个数组中两个数组的微分,并将其作为新结果插入到一个新数组中。。。我希望代码能够澄清这个意图,即使它不起作用,因为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.
runfile('C:/Users/Marco-DS/Dropbox/1_-TUDelft/4Q/AE1205 Python/Python-codes 2015/bonus-assignments/week_-5 Gravity-simu.py',wdir='C:/Users/Marco-DS/Dropbox/1_-TUDelft/4Q/AE1205 Python/Python-codes-2015/bonus-assignments'))
[[249 660]
[256 605]
[119 423]
[422 398]
[480 504]
[249 660]]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
运行文件('C:/Users/Marco DS/Dropbox/1_TUDelft/4Q/AE1205 Python/Python codes 2015/bonus Assignments/week_5 Gravity simu.py',wdir='C:/Users/Marco DS/Dropbox/1_TUDelft/4Q/AE1205 Python/Python codes 2015/bonus Assignments')
文件“C:\Users\Marco DS\Anaconda\lib\site packages\spyderlib\widgets\externalshell\sitecustomize.py”,第682行,在runfile中
execfile(文件名、命名空间)
文件“C:\Users\Marco DS\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第71行,在execfile中
exec(编译(脚本文本,文件名,'exec'),glob,loc)
文件“C:/Users/Marco DS/Dropbox/1_TUDelft/4Q/AE1205 Python/Python codes 2015/bonus Assignments/week_5 Gravity simu.py”,第37行
r[x,i]=(XYPos[x,:]-XYPos[i,:])
ValueError:使用序列设置数组元素。

尝试在容器数组中添加
dtype=

流星数=5 #坐标设置: XPos=nprand.randint(0600,(MeteorNum,1)) YPos=nprand.randint(0800,(MeteorNum,1)) XYPos=np.hstack((XPos,YPos)) XYPos=np.vstack((XYPos,XYPos[0])) 打印XYPos #距离: r=np.zero((meteonum,meteonum),dtype=np.ndarray) 对于范围内的i(0,MeteorNum): 对于范围内的x(0,MeteorNum): r[x,i]=(XYPos[x,:]-XYPos[i,:]) r=r*10*5 印刷机 编辑

dtype参数表示数组所需的数据类型,例如。, numpy.int8。默认值为numpy.float64


要删除错误,我认为您需要在数组中添加一个大小为2的额外维度
r

r = np.zeros((MeteorNum,MeteorNum,2))
由于for循环中的
XYPos[x,:]-XYPos[i,:]
具有
(2,)


这将返回一个形状数组
(5,5,2)

请显示所有错误…请显示整个错误消息(回溯),它应该有行号、卡在上面的行号、函数名、模块名等。您对差异的理解是什么?仅计算左列和右列的差异?是否有意将
np.hstack
np.vstack
存储在同一变量中?P.R.vstack是为了将第一个元素复制并添加到数组的最后一个元素。这样,当我使用for循环时,我可以确保包含所有值。是的!这对我有用!它现在给了我一个巨大的数组,这正是我所需要的。然而,所有元素现在也会说“数组”,然后是数组中的内容,但是哦,好吧。它完成了任务。。。虽然dtype做了什么?我编辑了我的答案来定义dtype参数role@user3604362如果答案对你有帮助,你可以接受。嗯,不。。。这确实有效,但是我最终得到了几个数组,而我只需要一个大数组。@user3604362真的吗
r
应该是一个形状数组
(5,5,2)
。使用
r.shape
进行检查。
user
,是否将一个3d阵列与多个阵列混淆?您是否理解尝试将两个值放入
r
的一个插槽中的问题?