我有张量数组 a 和张量矩阵 m 。现在,我想在从索引0开始以len( m )-2结尾的第二个位置之后,将 a 插入到 m 中。让我们用numpy和Plain python做一个等效的例子:
# define m
m = np.array([[3,7,6],[4,3,1],[8,4,2],[2,8,7]])
print(m)
#[[3 7 6]
# [4 3 1]
# [8 4 2]
# [2 8 7]]
# define a
a = np.array([1,2,3])
#[1 2 3]
# insert a into m
result = []
for i in range(len(m)):
result.append(a)
result.append(m[i])
print(np.array(result))
#[[1 2 3]
# [3 7 6]
# [1 2 3]
# [4 3 1]
# [1 2 3]
# [8 4 2]
# [1 2 3]
# [2 8 7]]
我正在寻找张量流的解决方案。我深信有一种解决方案不需要循环,但是我找不到。我希望有人可以帮我解决这个问题!
答案 0 :(得分:0)
这应该有效,
np.ravel(np.column_stack((m, np.tile(a, (4, 1))))).reshape(8, 3)
有关想法,请参阅Interweaving two numpy arrays。应用此处描述的所有解决方案,然后重塑。
答案 1 :(得分:0)
您可以在矩阵的每一行的开头连接目标向量,然后对其进行整形。
import tensorflow as tf
initial_array = tf.constant([
[3, 7, 6],
[4, 3, 1],
[8, 4, 2],
[2, 8, 7],
])
vector_to_add = [1, 2, 3]
concat = tf.concat([[vector_to_add] * initial_array.shape[0], initial_array], axis=1) # Concatenate vector_to_add to each vector of initial_array
output = tf.reshape(concat, (2 * initial_array.shape[0], initial_array.shape[1])) # Reshape