关于Python实现对数组每个元素重复N次复制

1.问题描述

有一个(1,3)的数组F,我想对每个元素复制后并保留在同一个行内(维度)效果如下面的New F所示,查阅网上资料后,我找到了解决方案。

f1,f2,f3 = 0,0,10**(-5) 	#单位:牛顿N
F = np.array([f1,f2,f3])
Old F: [0.e+00 0.e+00 1.e-05]
New F:
 [[[0.e+00 0.e+00 0.e+00 0.e+00]]

 [[0.e+00 0.e+00 0.e+00 0.e+00]]

 [[1.e-05 1.e-05 1.e-05 1.e-05]]]

2.解决方案

2.1 尝试1 np.tile
首先查到的是利用np.tile进行复制,我是用如下命令,但并未解决我的问题。

print("New F:\n",np.tile(F,(4,1)).reshape((3,1,4)))
New F:
 [[[0.e+00 0.e+00 1.e-05 0.e+00]]

 [[0.e+00 1.e-05 0.e+00 0.e+00]]

 [[1.e-05 0.e+00 0.e+00 1.e-05]]]

2.2 尝试2 np.stack
虽然目的达到了,但是每次仅能复制偶数次。

print("New F:\n",np.stack(2*(F,F), axis=1).reshape((3,1,4)))
New F:
 [[[0.e+00 0.e+00 0.e+00 0.e+00]]

 [[0.e+00 0.e+00 0.e+00 0.e+00]]

 [[1.e-05 1.e-05 1.e-05 1.e-05]]]

2.2 解决方案 np.repeat
使用np.repeat可以完美解决!!!

print("New F:\n",np.repeat(F[np.newaxis,...], 4, axis=1).reshape((3,1,4)))
New F:
 [[[0.e+00 0.e+00 0.e+00 0.e+00]]

 [[0.e+00 0.e+00 0.e+00 0.e+00]]

 [[1.e-05 1.e-05 1.e-05 1.e-05]]]

以上仅是自己通过搜索网上资料的尝试,很有可能np.stack和np.tile也可以解决,暂且使用np.repeat进行数组内元素复制N次吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值