TensorFlow中如何删除包含nan值的张量行
TensorFlow删除包含NaN的行实现方法
实现步骤
你可以通过掩码筛选的方式完成需求,核心用到3个TensorFlow内置接口,完整可运行代码如下:
import tensorflow as tf import numpy as np # 构造输入张量 tensor = tf.convert_to_tensor(np.array([[0, 1, 2, 3, 4, np.nan], [6, 7, 8, 9, 10, 11]])) # 1. 逐元素检测是否为NaN # 2. 按行判断是否存在至少一个NaN # 3. 筛选出不含NaN的行,拉平为一维张量 result = tf.reshape(tf.boolean_mask(tensor, ~tf.reduce_any(tf.math.is_nan(tensor), axis=1)), [-1]) # 如果需要得到示例中的int64类型,可补充类型转换 result = tf.cast(result, tf.int64)
输出验证
运行后打印result即可得到你需要的结果:
<tf.Tensor: shape=(6,), dtype=int64, numpy=array([ 6, 7, 8, 9, 10, 11])>
关键接口说明
tf.math.is_nan():逐个元素判断是否为NaN值,返回和输入同形状的布尔张量tf.reduce_any(..., axis=1):沿行维度做布尔或运算,只要该行存在一个NaN就返回Truetf.boolean_mask():根据布尔掩码筛选符合条件的张量行
内容的提问来源于stack exchange,提问作者mCalado
相关产品推荐
相关产品推荐

