返回np.shape()的含义

时间:2015-05-04 22:20:30

标签: python numpy physics shape

我有一个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.        ]]

还有更多这种形状的盒子

这究竟意味着什么(大盒子,盒子,小盒子,行,列)???

2 个答案:

答案 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方法重塑了赋予参数中定义的形状的矩阵。但是为了进一步帮助你完成代码:

1

你的函数定义似乎完全没问题,除了我没有看到原因,为什么你在数组中导出x和y,而不是只返回两个不同的值。

2

阵列的初始化似乎也很好。

3

完全没有理由重塑刚才创建的数组,只需保留原样即可。

4

您必须使用每组值分别调用该函数以创建坐标。通过对刚刚创建的数组使用itteration来做到这一点。