小能豆

在 Python 中拆分数组

py

我有一个数组,(219812,2)但是我需要将其拆分为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()

阅读 6

收藏
2025-01-14

共1个答案

小能豆

要提取二维数组的第 i 列,请使用arr[:, i]

您还可以使用 解包数组(它按行工作,因此您需要转置u以使其具有形状(2,n))u1, u2 = u.T

顺便说一句,星号导入并不是很好(除了在终端中进行交互使用),所以我在你的代码中添加了几个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()

对数图似乎也看起来更美观。

2025-01-14