从 numpy 数组中提取元素 python
Extract elements from a numpy array python
我有这个数组:
rel=np.array([1,0,0,1,1,0,1,0,1,0,0])
和
eta=np.array([2,3,10,16,4,3])
其中eta由rel中0元素对应的元素组成。也就是说,eta[0]=2对应rel[1]=0,eta[1]=3对应rel[2]=0,eta[2]=10对应rel[5]=0 ,等等。
我从rel中随机提取了一些元素,例如
rel_extract=np.array([1,0,0,1,0])
空元素位于第 1、第 2 和第 4 个索引处。
考虑到 eta_extract 是使用相同的 eta 规则创建的,我如何使用 eta 中的值创建一个名为 eta_extract 的数组?我猜 eta_extract 应该是
eta_extract=array([10,16,3])
非常感谢
您可以创建一个长度为 rel
的临时零数组。然后获取 rel
的索引为零。然后将临时数组中的那些索引映射到 rel
的值。最后,生成一些 rel
的随机索引,并在 rel
的值为零的那些索引处获得 eta
的关联值。
# An array of zeros of length rel
tmp = np.zeros(rel.shape[0])
# Indices of rel that are zero
zero_rel_loc = np.where(rel == 0)
# Map the value from rel to tmp
tmp[zero_rel_loc] = eta
# Generate a subset of size 5 of indices/values from rel
i = np.arange(rel.shape[0])
rand_ind = np.random.choice(i, 5, replace=False)
rand_eta_val = tmp[rand_ind]
# Remove the extra zeros
result = rand_eta_val[np.where(rand_eta_val != 0)]
我有这个数组:
rel=np.array([1,0,0,1,1,0,1,0,1,0,0])
和
eta=np.array([2,3,10,16,4,3])
其中eta由rel中0元素对应的元素组成。也就是说,eta[0]=2对应rel[1]=0,eta[1]=3对应rel[2]=0,eta[2]=10对应rel[5]=0 ,等等。
我从rel中随机提取了一些元素,例如
rel_extract=np.array([1,0,0,1,0])
空元素位于第 1、第 2 和第 4 个索引处。
考虑到 eta_extract 是使用相同的 eta 规则创建的,我如何使用 eta 中的值创建一个名为 eta_extract 的数组?我猜 eta_extract 应该是
eta_extract=array([10,16,3])
非常感谢
您可以创建一个长度为 rel
的临时零数组。然后获取 rel
的索引为零。然后将临时数组中的那些索引映射到 rel
的值。最后,生成一些 rel
的随机索引,并在 rel
的值为零的那些索引处获得 eta
的关联值。
# An array of zeros of length rel
tmp = np.zeros(rel.shape[0])
# Indices of rel that are zero
zero_rel_loc = np.where(rel == 0)
# Map the value from rel to tmp
tmp[zero_rel_loc] = eta
# Generate a subset of size 5 of indices/values from rel
i = np.arange(rel.shape[0])
rand_ind = np.random.choice(i, 5, replace=False)
rand_eta_val = tmp[rand_ind]
# Remove the extra zeros
result = rand_eta_val[np.where(rand_eta_val != 0)]