Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我没有收到我想要的阵列,有人能帮我吗?_Python_Arrays_Numpy - Fatal编程技术网

Python 我没有收到我想要的阵列,有人能帮我吗?

Python 我没有收到我想要的阵列,有人能帮我吗?,python,arrays,numpy,Python,Arrays,Numpy,我必须做一个有4个功能的程序。其中3个必须是3个坐标x,y,z,另一个必须是函数,它给出了np.array,所有坐标加在一起,但我只收到一个巨大的数组,每个数组的所有因子,就像数组中唯一的元素一样。我不知道我是否在解释我自己,但这是我的代码: import numpy as np def x(t): x = (5.25 * t) return x def y(t): y = (-0.365 * (t**2)) + (7.15 * t) + 34 return y def

我必须做一个有4个功能的程序。其中3个必须是3个坐标x,y,z,另一个必须是函数,它给出了np.array,所有坐标加在一起,但我只收到一个巨大的数组,每个数组的所有因子,就像数组中唯一的元素一样。我不知道我是否在解释我自己,但这是我的代码:

import numpy as np

def x(t):
   x = (5.25 * t)
return x


def y(t):
    y = (-0.365 * (t**2)) + (7.15 * t) + 34
return y


def z(t):
    z = (-0.49 * (t**2)) + (9.9 * t)
return z


def f(t):
    f = np.array([x(t), y(t), z(t)])
return f

f(t) [0:49]
t = np.arange(0, 21, 0.4275996114)
M = f(t)
print(M)

我必须打印球的前50个坐标,直到20秒,但我只收到50个x数字,就像一个数组的1个元素一样。

问题不是很清楚,但我想我理解你的问题和你的问题。基本上你想要得到一个矩阵M,其中每一行是一个包含三个x,y,z坐标的numpy数组。您希望在20秒内有尽可能多的行

M = np.empty((0,3), float)
t = np.arange(0, 21, 0.4275996114)
for time in t:
    M = np.append(M, [f(time)], axis = 0)
print(M)
解释

首先,我们通过指定每行由3列组成来创建将成为矩阵的内容。我们希望它包含十进制数,因此我们将float指定为类型:

M = np.empty((0,3), float)
代码中的一个问题是,只调用f函数一次,将整个t数组作为参数传递。实际上,对于t中包含的每一时刻,都必须调用f函数一次。 要解决这个问题,你必须在t中的每个元素上做一个循环。每次调用
f()
的结果必须作为行添加到M矩阵中

t = np.arange(0, 21, 0.4275996114)
for time in t:
    M = np.append(M, [f(time)], axis = 0)
部分输出

此输出仅显示从0到3的范围的结果。这只是一个示例,向您展示所获得输出的格式

[[ 0.         34.          0.        ]
 [ 2.24489796 36.9906001   4.14364385]
 [ 4.48979592 39.84772596  8.10810311]
 [ 6.73469388 42.57137757 11.89337776]
 [ 8.97959184 45.16155495 15.49946782]
 [11.2244898  47.61825808 18.92637328]
 [13.46938776 49.94148697 22.17409413]
 [15.71428572 52.13124162 25.24263039]]

首先去掉“f(t)[0:49]”行,你能解释一下你到底想做什么吗?好吧,我想我没有解释我自己。我必须做一个有4个功能的程序。x,y,z是一个人踢的球的坐标函数。起始坐标是0,34,0,然后我需要使用这个函数来计算以时间为基准的其他坐标。我的程序必须给出50个数组,球的坐标在0秒到20秒之间。我不知道这次我是否解释了better@AntalOppenheimer这能回答你的问题吗?