说我的大小为(2,3,2)
数组a
,大小为(2)
数组b。
import numpy as np
a = np.array([[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]]])
b = np.array([0.2, 0.8])
数组a
如下所示:
我想使用numpy例程将b
连接到a
中每个2d arrray的第一行来制作数组
我似乎无法使concatenate
,vstack
,append
等工作。
答案 0 :(得分:2)
试试这个:
np.concatenate(([[b]]*2,a),axis=1)
# Result:
array([[[ 0.2, 0.8],
[ 1. , 2. ],
[ 3. , 4. ],
[ 5. , 6. ]],
[[ 0.2, 0.8],
[ 7. , 8. ],
[ 9. , 10. ],
[ 11. , 12. ]]])
答案 1 :(得分:1)
这有效:
np.insert(a.astype(float), 0, b, 1)
输出:
array([[[ 0.2, 0.8],
[ 1. , 2. ],
[ 3. , 4. ],
[ 5. , 6. ]],
[[ 0.2, 0.8],
[ 7. , 8. ],
[ 9. , 10. ],
[ 11. , 12. ]]])
如果您不首先使用astype()
进行投射,那么您最终会预先[0, 0]
注意,这比concatenate()
:
$ python test.py
m1: 8.20246601105 sec
m2: 43.8010189533 sec
代码:
#!/usr/bin/python
import numpy as np
import timeit
a = np.array([[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]]])
b = np.array([0.2, 0.8])
def m1():
np.concatenate(([[b]]*2,a),axis=1)
def m2():
np.insert(a.astype(float), 0, b, 1)
print "m1: %s sec" % timeit.timeit(m1)
print "m2: %s sec" % timeit.timeit(m2)