python - 如何在 tensorflow 中正确地将一个数组附加到另​​一个数组?

标签 python python-3.x numpy tensorflow

我目前在 python 中有 2 个 ndarray,我使用 zip 来获取索引并迭代这两个数组,并将每个单元格从一个单元格附加到另一个单元格,类似于下面所示。我现在想将其转换为 tensorflow ,并基本上完全删除 for 循环。我认为这很容易,但我似乎正在处理很多形状问题,并认为是时候在 SO 上发帖来找出正确的方法来做到这一点。

arr1的形状为(24,),arr2的形状为(24,5)

这就是我试图引入 TF 的逻辑。

for id1, id2 in zip(arr1, arr2):
  row = id2.tolist()
  row.append(id1)
  finarr.append(row)

我已经尝试了很多方法,但我当前的实现(低于显示的错误)仍然无法正常工作。

错误是:

: ('all the input array dimensions except for the concatenation axis must match exactly',)

当前代码:

val = tf.transpose(tf.reshape(arr1, (-1, arr1.size)))
finarr= tf.concatenate([arr2, val], 0)

我的想法是错的吗?有没有更好的办法?

--------编辑--------

下面的代码似乎是通过 numpy 执行连接的更优雅的方式,但我仍然没有找到等效的 tensorflow 。

finarr= np.column_stack((arr2, arr1))

最佳答案

您需要扩展arr1的维度,并沿最后一个轴连接。这是一种方法:

import numpy as np
import tensorflow as tf

arr1 = np.arange(24)
arr2 = np.arange(24 * 5).reshape(24, 5)
finarr_np = np.column_stack((arr2, arr1))

p1 = tf.placeholder(arr1.dtype, shape=arr1.shape)
p2 = tf.placeholder(arr2.dtype, shape=arr2.shape)
f = tf.concat([p2, p1[:, None]], -1)

with tf.Session() as sess:
    finarr_tf = sess.run(f, feed_dict={p1: arr1, p2: arr2})

assert (finarr_tf == finarr_np).all()

关于python - 如何在 tensorflow 中正确地将一个数组附加到另​​一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49575741/

相关文章:

python - 从列表中选择数据,同时保持顺序

python - 如何在字典列表中绘制值?

静态类范围内的python嵌套字典理解: variable not defined

python - 如何使用 JSON 中前一个值的最后一个数字继续新值?

python - 使用sklearn特征提取时出现内存错误

python - 无法使用 numpy load() 加载数组

Python numpy 如何将这个数组/图像列表 reshape 为拼贴画?

python - PyMongo/MongoDB - 起点和终点 LatLon 的地理空间查询

python - 如何在带有朴素贝叶斯分类器和 NLTK 的 scikit 中使用 k 折交叉验证

python - 有人可以解释一下如何在 python 上为 selenium 编写 xpath 吗?