Python 我没有收到我想要的阵列,有人能帮我吗?
我必须做一个有4个功能的程序。其中3个必须是3个坐标x,y,z,另一个必须是函数,它给出了np.array,所有坐标加在一起,但我只收到一个巨大的数组,每个数组的所有因子,就像数组中唯一的元素一样。我不知道我是否在解释我自己,但这是我的代码: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
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这能回答你的问题吗?