Python 在三维阵列的每个二维阵列上预先添加一维阵列
假设我有下面的大小Python 在三维阵列的每个二维阵列上预先添加一维阵列,python,numpy,Python,Numpy,假设我有下面的大小(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中每个二维阵列的第一行,以生成数组 我似乎无法使串联、vstack、附加等工作正常。试试这个: np.concatenate(([[b]]*2,a),ax
(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
中每个二维阵列的第一行,以生成数组
我似乎无法使串联
、vstack
、附加
等工作正常。试试这个:
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. ]]])
这项工作:
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]
注意,这比连接()要慢:
代码:
$ 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)