Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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 如何修改numpy结构化数组中选定行的一列_Python_Arrays_Numpy_Structured Array - Fatal编程技术网

Python 如何修改numpy结构化数组中选定行的一列

Python 如何修改numpy结构化数组中选定行的一列,python,arrays,numpy,structured-array,Python,Arrays,Numpy,Structured Array,我正在寻找一种简单的方法来修改它的选定行的numpy结构化数组的一个字段。这是我的SWE: import numpy as np dt=np.dtype([('name',np.unicode,80),('x',np.float),('y',np.float)]) a=np.array( [('a',0.,0.),('b',0.,0.),('c',0.,0.) ],dtype=dt) b=a.copy() a[a['name']=='a']['x']=1 print a==b # return

我正在寻找一种简单的方法来修改它的选定行的numpy结构化数组的一个字段。这是我的SWE:

import numpy as np
dt=np.dtype([('name',np.unicode,80),('x',np.float),('y',np.float)])
a=np.array( [('a',0.,0.),('b',0.,0.),('c',0.,0.) ],dtype=dt)
b=a.copy()
a[a['name']=='a']['x']=1
print a==b # return [ True  True  True]

在本例中,
a==b
结果应返回
[False-True-True]
。实际上,我想从“name”字段中选择数组的行,并修改其中一个字段(此处为“x”)的值。

我找到了答案。。。点是场和遮罩的位置。您需要将掩码应用于字段列,而不是查找掩码数组的字段:

a['x'][a['name']=='a']=1
print a==b # returns [False  True  True]

索引顺序很重要,因为“高级索引”(如
a[a['name']=='a']
)总是返回副本,而“基本索引”(如
a['x']
)总是返回视图。使用
a['x'][a['name']=='a']=1
修改视图会影响原始数组
a
,而使用
a[a['name']=='a']['x']=1
修改副本不会影响
a
。是时候转到pandas;)。df=熊猫数据帧(a);df.loc[df.name='a','x']=1。