简单但奇怪的vstack/连接问题(Python)

2 投票
1 回答
1561 浏览
提问于 2025-04-17 16:02

我在看关于numpy数组的文档,但有些地方我搞不懂。比如,这里的回答建议使用 np.vstacknp.concatenate 来合并数组,网上很多地方也这么说。

但是,当我尝试把转换后的 lists 变成 np.arrays 来合并时,却不成功:

>>> some_list = [1,2,3,4,5]
>>> np.array(some_list)
array([1, 2, 3, 4, 5])
>>> some_Y_list = [2,1,5,6,3]
>>> np.array(some_Y_list)
array([2, 1, 5, 6, 3])
>>> dydx = np.diff(some_Y_list)/np.diff(some_list)
>>> np.vstack([dydx, dydx[-1]])"

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    np.vstack([dydx, dydx[-1]])
  File "C:\Python27\lib\site-packages\numpy\core\shape_base.py", line 226, in vstack
    return _nx.concatenate(map(atleast_2d,tup),0)
ValueError: array dimensions must agree except for d_0

有没有什么办法可以做到这一点呢?

在这个情况下,我只是想把任意阶数的导数调整成和用户给的X数组一样的形状,这样我才能进行处理。

谢谢大家的帮助。

1 个回答

2

以下内容在某些非常有限的情况下才会有效:

np.vstack([dydx, dydx[-1]])

在这里,dydx 是一个数组,而 dydx[-1] 是一个单一的数值。

不太清楚你想要实现什么,但你是不是想把它们水平排列在一起呢:

np.hstack([dydx, dydx[-1]])

?

In [38]: np.hstack([dydx, dydx[-1]])
Out[38]: array([-1,  4,  1, -3, -3])

撰写回答