我有一个数组,(219812,2)但是我需要将其拆分为2 (219812)。
(219812,2)
2 (219812)
我一直收到错误ValueError: operands could not be broadcast together with shapes (219812,2) (219812)
ValueError: operands could not be broadcast together with shapes (219812,2) (219812)
我怎样才能完成?
如您所见,我需要从 u = odeint 中取出两个单独的解并将它们相乘。
def deriv(u, t): return array([ u[1], u[0] - np.sqrt(u[0]) ]) time = np.arange(0.01, 7 * np.pi, 0.0001) uinit = array([ 1.49907, 0]) u = odeint(deriv, uinit, time) x = 1 / u * np.cos(time) y = 1 / u * np.sin(time) plot(x, y) plt.show()
要提取二维数组的第 i 列,请使用arr[:, i]。
arr[:, i]
您还可以使用 解包数组(它按行工作,因此您需要转置u以使其具有形状(2,n))u1, u2 = u.T。
u
u1, u2 = u.T
顺便说一句,星号导入并不是很好(除了在终端中进行交互使用),所以我在你的代码中添加了几个np.和plt.,如下所示:
np.
plt.
def deriv(u, t): return np.array([ u[1], u[0] - np.sqrt(u[0]) ]) time = np.arange(0.01, 7 * np.pi, 0.0001) uinit = np.array([ 1.49907, 0]) u = odeint(deriv, uinit, time) x = 1 / u[:, 0] * np.cos(time) y = 1 / u[:, 1] * np.sin(time) plt.plot(x, y) plt.show()
对数图似乎也看起来更美观。