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