繁体   English   中英

基于另一个数组更改numpy数组值的矢量化方法

[英]vectorized way to change numpy array values based on another array

是否存在一种矢量化(或更优)的方式,可以基于除此方式以外的其他方式为numpy数组的某些数据点设置值?

import numpy as np

data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
pos = np.array([[1, 2], [2, 0]])

for p in pos:
    i,j = p
    data[i,j] = 20

print(data)

使用更高版本的Python,您可以通过解压缩另一个可迭代对象来在理解范围内创建列表。 然后,我们传递该列表以进行切片分配。

我们访问(切片)的方式是通过整数数组索引完成的

data[[*pos]] = 20
data

array([[ 1,  2,  3],
       [ 4,  5, 20],
       [20,  8,  9]])

对于其他版本的Python,请尝试:

data[pos.tolist()] = 20
data

只是通过@piRSquared扩展了很好的答案。

import numpy as np

data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9],[10,11,12]])
pos = np.array([[1.0, 2.0,0.03], [2.0, 0.0,0.06]])

data = data.astype(float)

data[pos[:,0:2].astype(int).tolist()] = pos[:,-1]
data

array([[  1.  ,   2.  ,   3.  ],
       [  4.  ,   5.  ,   0.03],
       [  0.06,   8.  ,   9.  ],
       [ 10.  ,  11.  ,  12.  ]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM