如何解决在numpy中明智地追加元素
我想附加两个 NumPy 数组。这两个数组具有相同的形状,我想附加两个数组的每个元素并将其存储在另一个计算成本较低的 NumPy 数组中。 例如:
a = np.arange (12).reshape(4,3)
b = np.arange (2,14).reshape(4,3)
我想创建以下 np.array:
c = [[ (0,2) (1,3) (2,4)]
[ (3,5) (4,6) (5,7)]
[ (6,8) (7,9) (8,10)]
[(9,11) (10,12) (11,13)]]
需要注意的是,使用for循环可以创建,但是高维的计算成本是巨大的。最好使用矢量化方式。 你能告诉我如何创建这个 np.array 吗?
解决方法
目前尚不清楚您期望的形状,但我相信您正在寻找numpy.dstack
:
>>> a
array([[ 0,1,2],[ 3,4,5],[ 6,7,8],[ 9,10,11]])
>>> b
array([[ 2,3,4],[ 5,6,7],[ 8,9,10],[11,12,13]])
>>> np.dstack([a,b])
array([[[ 0,[ 1,3],[ 2,4]],[[ 3,[ 4,6],7]],[[ 6,[ 7,9],10]],[[ 9,11],[10,12],13]]])
,
使用 dstack 和 reshape,您可以压缩和改造它们。
np.dstack((a,b)).reshape(4,2)
这就给你了
[[[ 0 2]
[ 1 3]
[ 2 4]]
[[ 3 5]
[ 4 6]
[ 5 7]]
[[ 6 8]
[ 7 9]
[ 8 10]]
[[ 9 11]
[10 12]
[11 13]]]
应该提供与元组相同的功能。我尝试了多种方法,但没有设法在 numpy 数组中保留实际的元组
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。