python - 在 numpy 中用数组填充数组?

标签 python arrays 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

编辑

The dtype argument indicate the desired data-type for the array, e.g., numpy.int8. Default is numpy.float64.

关于python - 在 numpy 中用数组填充数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30351233/

相关文章:

Python 函数到 'rotate' 网格 90 度与 for 循环

python - 需要说明可选参数

python - 实时 matplotlib 图在循环中不起作用

php - Laravel 更新要求在保存到数据库之前填写所有输入

regex - 有没有更好的方法来删除 perl 中字符串数组的字符串?

python - 从随机生成的数字中抽样?

Python 轮盘赌场景

python - 获取numpy中多维切片沿特定轴的索引

python - 如何切片列数未知的numpy数组?

python - 使用 nolearn-DBN 分类器时,“garray”对象没有属性 'size'