Python 3.x 从2d numpy数组中删除元素,而不松开结构

Python 3.x 从2d numpy数组中删除元素,而不松开结构,python-3.x,numpy,Python 3.x,Numpy,我想从2d numpy数组中删除特定字符。例如: myarr = np.array([[2,"?",5,2,3,6,8],[6,7,8,9,"?"]]) 如何在不丢失阵列结构的情况下删除“?”?我的结果应该如下所示: [[2,5,2,3,6,8] [6,7,8,9]] (我在Win7机器上使用Python 3.4.2和numpy 1.9)numpy数组必须是“矩形”的,即所有行/列必须具有相同的长度。您的示例看起来需要一个“锯齿状数组”,numpy不支持它 如果这只是一个选择不当的示例

我想从2d numpy数组中删除特定字符。例如:

myarr = np.array([[2,"?",5,2,3,6,8],[6,7,8,9,"?"]])
如何在不丢失阵列结构的情况下删除“?”?我的结果应该如下所示:

 [[2,5,2,3,6,8]
  [6,7,8,9]]
(我在Win7机器上使用Python 3.4.2和numpy 1.9)

numpy数组必须是“矩形”的,即所有行/列必须具有相同的长度。您的示例看起来需要一个“锯齿状数组”,numpy不支持它

如果这只是一个选择不当的示例,您可以删除?通过选择所有非?要素:

result = myarr[myarr!='?']
Numpy数组必须为“矩形”,即所有行/列的长度必须相同。您的示例看起来需要一个“锯齿状数组”,numpy不支持它

如果这只是一个选择不当的示例,您可以删除?通过选择所有非?要素:

result = myarr[myarr!='?']
myarr=np.array([2,“?”,5,2,3,6,8],[6,7,8,9,“?”])

array([[2, '?', 5, 2, 3, 6, 8], [6, 7, 8, 9, '?']], dtype=object)
这是一个由2个类型为
object
的项组成的数组。没有“结构”。这与列表列表基本相同

mylist = [[2, '?', 5, 2, 3, 6, 8], [6, 7, 8, 9, '?']]
删除“?”的简单方法是:

for l in mylist:
    l.remove('?')
但如果子列表中没有任何“?”,则会引发ValueError,如果子列表中有多个“?”,则不会全部删除。这两种故障都可以通过编写一个小函数来修复,该函数计算出现的次数,并删除正确的次数。你能处理这个功能吗

因此,问题归结为从列表列表(或列表数组)中删除选定元素


“全部删除”功能比我想象的要简单:

 def remove_all(a,x):
     while x in a:
         a.remove(x)
 for a in myarr:
     a.remove_all('?')
myarr=np.array([2,“?”,5,2,3,6,8],[6,7,8,9,“?”])

array([[2, '?', 5, 2, 3, 6, 8], [6, 7, 8, 9, '?']], dtype=object)
这是一个由2个类型为
object
的项组成的数组。没有“结构”。这与列表列表基本相同

mylist = [[2, '?', 5, 2, 3, 6, 8], [6, 7, 8, 9, '?']]
删除“?”的简单方法是:

for l in mylist:
    l.remove('?')
但如果子列表中没有任何“?”,则会引发ValueError,如果子列表中有多个“?”,则不会全部删除。这两种故障都可以通过编写一个小函数来修复,该函数计算出现的次数,并删除正确的次数。你能处理这个功能吗

因此,问题归结为从列表列表(或列表数组)中删除选定元素


“全部删除”功能比我想象的要简单:

 def remove_all(a,x):
     while x in a:
         a.remove(x)
 for a in myarr:
     a.remove_all('?')

如果numpy不支持此功能,那么上面示例中的“myarr”代表什么?为什么在使用np不支持的np.array()命令构造对象时,我没有收到错误消息?如果numpy不支持此功能,“myarr”代表什么在上面的示例中,表示为什么在使用np不支持的np.array()命令构造对象时没有收到错误消息?感谢您指出这一点。我刚开始使用numpy,没有注意到代码中的列表/数组混淆。感谢您指出这一点。我刚开始使用numpy,没有注意到代码中的列表/数组混乱。