如果条目本身是结构化数组,如何将 numpy 数组中的条目设置为 0 或 None ?

映射

我有一个结构化数组的对象列表,例如这样的:

a = np.array([('Rex', 9, 81.0), ('Fido', 3, 27.0)], dtype=[('name', 'U10'), ('age', 'i4'), ('weight', 'f4')])
b = np.array([('Dog3', 9, 81.0), ('Dog4', 3, 27.0)], dtype=[('name', 'U10'), ('age', 'i4'), ('weight', 'f4')])
c = np.array([('Dog5', 9, 81.0), ('Dog6', 3, 27.0)], dtype=[('name', 'U10'), ('age', 'i4'), ('weight', 'f4')])

lst = [a, b, c]

现在我需要这个列表本身就是一个 numpy 数组,因为我需要numpy.where()在它上面使用,否则这不起作用。

lst = np.array(lst)

那么我做这样的事情:

ID = np.where(lst == c)
lst[ID] = 0 or rather lst[ID] = None

但不是我想得到的,即

>>>lst
array([a, b, 0/None], dtype=...)

我要么得到这个:

>>>lst
array([a, b, [('0', 0,  0.), ('0', 0,  0.)]], dtype=...)

或者它根本不起作用:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

我怎样才能做到这一点?我必须转换lst回列表拳头吗?

保利

让我们创建一个更简单的数组,并尝试设置一些值:

In [14]: dt = np.dtype([('foo','U10'),('bar',int)])                             
In [16]: arr = np.zeros(3, dtype=dt)                                            
In [17]: arr                                                                    
Out[17]: array([('', 0), ('', 0), ('', 0)], dtype=[('foo', '<U10'), ('bar', '<i8')])
In [18]: arr[1]                                                                 
Out[18]: ('', 0)
In [19]: arr[1] = 12                                                            
In [20]: arr                                                                    
Out[20]: 
array([('',  0), ('12', 12), ('',  0)],
      dtype=[('foo', '<U10'), ('bar', '<i8')])  

注意字符串 '12' 和整数 12 的混合。

设置一个元组,每个字段一个值:

In [21]: arr[2] = ('dog',23)                                                    

使用 a 设置None失败,因为它无法None按照第二个字段的要求转换为整数。

In [22]: arr[0] = None                                                          
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-22-2f7a4c897706> in <module>
----> 1 arr[0] = None

TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
In [23]: arr                                                                    
Out[23]: 
array([('None',  0), ('12', 12), ('dog', 23)],
      dtype=[('foo', '<U10'), ('bar', '<i8')])

实际上它确实设法设置了字符串字段。

arr是一个数组,其中每个元素必须具有相同的dtype.

带有objectdtype的数组的行为更像是一个列表。虽然偶尔有用,但不应用作列表的替代品。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

numpy:检查数组中的位设置为1还是0?

来自分类Dev

numpy:如何将列添加到现有的结构化数组?

来自分类Dev

如何将Numba“ @vectorize” ufunc与结构化的Numpy数组一起使用?

来自分类Dev

Python在numpy数组中找不到None

来自分类Dev

为什么使用mask = None或mask = 0创建蒙版的numpy数组太慢

来自分类Dev

从numpy数组中删除条目

来自分类Dev

numpy中结构化数组的形状

来自分类Dev

numpy:将行中的重复值设置为0

来自分类Dev

冒号,无,numpy数组索引器中的slice(None)

来自分类Dev

从numpy数组中删除None的有效方法

来自分类Dev

从Numpy数组或Python列表中删除前导None项目

来自分类Dev

NumPy数组以0和1为界?

来自分类Dev

比较numpy结构化数组

来自分类Dev

从列创建numpy结构化数组

来自分类Dev

numpy结构化数组文档混乱

来自分类Dev

Numpy结构化数组的打印精度

来自分类Dev

索引结构化numpy数组

来自分类Dev

Numpy结构化数组的打印精度

来自分类Dev

Python:当请求中没有值时,如何将变量设置为“ None”或“ 0”之类的值

来自分类Dev

NumPy-根据结构化数组中的其他值设置结构化数组中的值

来自分类Dev

在Numpy数组中重新组合条目

来自分类Dev

用numpy数组替换numpy数组的条目

来自分类Dev

如何在numpy结构化数组中选择一行并设置值?

来自分类Dev

将numpy数组中的列设置为零

来自分类Dev

通过索引将numpy数组中的值设置为NaN

来自分类Dev

将与值(python3)不同的numpy数组的元素设置为零:a [a <> 5] = 0

来自分类Dev

在数组中,将行中的NA设置为0

来自分类Dev

无法减去结构化numpy数组中的特定字段

来自分类Dev

将结构化的numpy数组(包含子数组)转换为pandas数据框

Related 相关文章

热门标签

归档