我有一些数值的NumPy数组,我希望数值为2、3和7的点将保持不变,但其他值将是NaN.

原始的nyopartist数组看起来像这样

  [[0, 7, 2, ..., 1, 6, 0],
   [5, 3, 0, ..., 2, 5, 0],
   ...,
   [8, 2, 0, ..., 1, 0, 7],
   [0, 3, 2, ..., 0, 2, 0],
   [7, 1, 0, ..., 0, 7, 0]],

我的预期结果是

  [[nan, 7, 2, ..., nan, nan, nan],
   [nan, 3, nan, ..., 2, nan, nan],
   ...,
   [nan, 2, nan, ..., nan, nan, 7],
   [nan, 3, 2, ...,   nan, 2, nan],
   [7, nan, nan, ..., nan, 7, nan]],

推荐答案

结合np.isinnp.where:

a = np.array([[0, 7, 2, 1, 6, 0],
              [5, 3, 0, 2, 5, 0],
              [8, 2, 0, 1, 0, 7],
              [0, 3, 2, 0, 2, 0],
              [7, 1, 0, 0, 7, 0]],)

out = np.where(np.isin(a, [2, 3, 7]), a, np.nan)

如果a有一个float dtype,你也可以修改:

a = np.array([[0, 7, 2, 1, 6, 0],
              [5, 3, 0, 2, 5, 0],
              [8, 2, 0, 1, 0, 7],
              [0, 3, 2, 0, 2, 0],
              [7, 1, 0, 0, 7, 0]], dtype=float)

a[~np.isin(a, [2, 3, 7])] = np.nan

输出:

array([[nan,  7.,  2., nan, nan, nan],
       [nan,  3., nan,  2., nan, nan],
       [nan,  2., nan, nan, nan,  7.],
       [nan,  3.,  2., nan,  2., nan],
       [ 7., nan, nan, nan,  7., nan]])

Python相关问答推荐

当密钥是复合且唯一时,Pandas合并抱怨标签不唯一

非常奇怪:tzLocal.get_Localzone()基于python3别名的不同输出?

在Python Attrs包中,如何在field_Transformer函数中添加字段?

从numpy数组和参数创建收件箱

如何在类和classy-fastapi -fastapi- followup中使用FastAPI创建路由

为什么默认情况下所有Python类都是可调用的?

try 将一行连接到Tensorflow中的矩阵

在极中解析带有数字和SI前缀的字符串

为什么在FastAPI中创建与数据库的连接时需要使用生成器?

循环浏览每个客户记录,以获取他们来自的第一个/最后一个渠道

如何合并具有相同元素的 torch 矩阵的行?

什么是一种快速而优雅的方式来转换一个包含一串重复的列,而不对同一个值多次运行转换,

需要帮助使用Python中的Google的People API更新联系人的多个字段'

我什么时候应该使用帆布和标签?

PySpark:如何最有效地读取不同列位置的多个CSV文件

使用xlsxWriter在EXCEL中为数据帧的各行上色

如何在Quarto中的标题页之前创建序言页

为什么按下按钮后屏幕的 colored颜色 保持不变?

VSCode Pylance假阳性(?)对ImportError的react

如何删除剪裁圆的对角线的外部部分