Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么不';我的数据不是被屏蔽了吗?_Python_Numpy_Multidimensional Array - Fatal编程技术网

Python 为什么不';我的数据不是被屏蔽了吗?

Python 为什么不';我的数据不是被屏蔽了吗?,python,numpy,multidimensional-array,Python,Numpy,Multidimensional Array,我拥有的数据对象是 知道数据是一个numpy对象我做了以下工作: data = [[0, 1, 1, 5, 5, 5, 0, 2, 2, 2, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6, 6, 6], [1, 1, 1, 0, 5, 5, 5, 0, 2, 2, 0, 0, 2, 0, 0, 6, 6, 6, 0, 0, 6, 6], [1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 6, 0,

我拥有的数据对象是

知道数据是一个numpy对象我做了以下工作:

data = [[0, 1, 1, 5, 5, 5, 0, 2, 2, 2, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6, 6, 6],
        [1, 1, 1, 0, 5, 5, 5, 0, 2, 2, 0, 0, 2, 0, 0, 6, 6, 6, 0, 0, 6, 6],
        [1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 6, 0, 0, 6, 6]]
我想将列表中的数字作为输入设置为0,我尝试了:

data = np.array(data)
我希望前一个矩阵中出现的所有2和4都是0,其余的保持它们的值,我得到:

TypeError:只能将整数标量数组转换为标量索引


还尝试使用
np以numpy数组的形式提供数据。array
也给出了错误。

如果要将这些匹配值设置为0,则不应通过检查否定掩码。下面的代码工作正常:

另外,您应该将
数据
设置为numpy数组,而不是列表列表

data[~np.isin(data,[2,4])] = 0

为了重现您的错误:

In [10]: data = np.array([[0, 1, 1, 5, 5, 5, 0, 2, 2, 2, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6, 6, 6],
    ...:         [1, 1, 1, 0, 5, 5, 5, 0, 2, 2, 0, 0, 2, 0, 0, 6, 6, 6, 0, 0, 6, 6],
    ...:         [1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 6, 0, 0, 6, 6]])
    ...:         

In [11]: data[np.isin(data, [2, 4])] = 0

In [12]: data
Out[12]: 
array([[0, 1, 1, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6],
       [1, 1, 1, 0, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 0, 6, 6],
       [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 6, 6]])
In[13]:数据=[[0,1,1,5,5,0,2,2,2,2,6,6,6,6,6],
...:         [1, 1, 1, 0, 5, 5, 5, 0, 2, 2, 0, 0, 2, 0, 0, 6, 6, 6, 0, 0, 6, 6],
...:         [1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 6, 0, 0, 6, 6]]
...:         
在[14]中:数据[np.isin(数据[2,4])]=0
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1数据[np.isin(数据[2,4])]=0
TypeError:只能将整数标量数组转换为标量索引

这是什么神奇的
标签
?更改为
数据
,感谢您指出。我相信如果数据是一个列表,您在尝试使用
数据[~np.isin(data,[2,4])]
时会遇到错误,但我不相信如果数据是
数组
。请编辑以包含
data=[那东西]
data=np.array(data)
data[~np.isin(data,[2,4])]=0
打印(data)
。我的意思是,它会给出与您想要的相反的结果,但不应该引起错误。@DSM我检查了代码中的数据类型,它是
,但执行
data=np。数组(数据)
没有修复它。我只是检查了数据类型,它是
在示例中,它是其他先前计算的变量和函数,而不仅仅是硬编码的,这会以任何方式影响答案吗
In [13]: data = [[0, 1, 1, 5, 5, 5, 0, 2, 2, 2, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6, 6, 6],
    ...:         [1, 1, 1, 0, 5, 5, 5, 0, 2, 2, 0, 0, 2, 0, 0, 6, 6, 6, 0, 0, 6, 6],
    ...:         [1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 6, 0, 0, 6, 6]]
    ...:         

In [14]: data[np.isin(data, [2, 4])] = 0
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-14-06ee1662f1f2> in <module>()
----> 1 data[np.isin(data, [2, 4])] = 0

TypeError: only integer scalar arrays can be converted to a scalar index