我有一个numpy utf8的程序,它允许我计算从地面抛物线的坐标。我需要创建一个返回坐标(#1)的函数,创建要使用的不同数组值(#2),最后使用该函数为每个值包生成不同的坐标
#1
def coordenadas(v,a,t,g=9.81):
rad=deg2rad(a)
x=v*cos(a)*t
y=v*sin(a)*t-(1./2.)*g*(t**2)
xy=array([x,y]).T
return xy
#2
v=arange(50,100,10) #m/s
adegree=arange(45,90,5) #degrees
a=deg2rad(adegree) #rads
t=linspace(0,10,50) #segundos
#3
v.shape=(5,1,1)
a.shape=(1,9,1)
t.shape=(1,1,50)
#5
XY=coordenadas(v,a,t,g=9.81)
print shape(XY)
print XY
#4
我的问题是形状(XY)返回
(50L, 9L, 5L, 2L)
和XY(只有一点,太长)
[[[[ 0. 0. ]
[ 0. 0. ]
[ 0. 0. ]
[ 0. 0. ]
[ 0. 0. ]]
还有更多这种形状的盒子
这究竟意味着什么(大盒子,盒子,小盒子,行,列)???
答案 0 :(得分:2)
(50L, 9L, 5L, 2L)
表示4D
数组。
您可以将其显示为50x9
矩阵,此矩阵的每个单元格都包含5x2
矩阵
答案 1 :(得分:0)
Numpy数组基本上是矩阵,其中每个box []代表一个新维度的开头。作为矩阵的一个简单例子
11
23
可以写成numpy:
a = numpy.array([[1,1],[2,3]])
然后将打印为
array([[1, 1],
[2, 3]])
由于这是一个二维矩阵,外部的"框"标记矩阵的边缘,而内框是矩阵的行,,
分隔条目。不带参数调用a.shape
会得到2x2矩阵的形状:
(2, 2)
使用参数调用shape
方法重塑了赋予参数中定义的形状的矩阵。但是为了进一步帮助你完成代码:
你的函数定义似乎完全没问题,除了我没有看到原因,为什么你在数组中导出x和y,而不是只返回两个不同的值。
阵列的初始化似乎也很好。
完全没有理由重塑刚才创建的数组,只需保留原样即可。
您必须使用每组值分别调用该函数以创建坐标。通过对刚刚创建的数组使用itteration来做到这一点。