【问题标题】:How can I add elements in random indices of an array?如何在数组的随机索引中添加元素?
【发布时间】:2017-05-03 07:46:21
【问题描述】:

我生成了一个 4 x 4 数组。然后我生成了一个长度为 8 的 1 和 0 的一维数组,例如 [0 1 0 1 0 1 1 0]。然后我生成了一个种子,用于创建随机索引样本。生成的索引数等于消息中的元素数。现在我希望在生成的索引中添加消息的元素,这些元素表示 4 x 4 数组中索引的位置。在 4 x 4 矩阵的索引中添加消息的元素后。我希望使用添加的元素显示新的 4 x 4 数组矩阵。

import numpy as np  
import random  
from PIL import Image 
import matplotlib.pyplot as plt 

#array  
cover = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])

max_len = (4 * 4)  #number of elements in cover since we have a 4 by 4 array


#Generating Message
msg = np.random.randint(2, size=8)  
len_msg = len(msg)

#Generating a seed which will be used to locate where the msg will be added in the matrix
seed = 4  
print "The chosen seed is %d" % (seed)  
random.seed(seed)

#Generate Indices to be used to add in matrix
indices = random.sample(range(len_msg, max_len),len_msg)  

【问题讨论】:

  • 有什么问题?
  • 正确提及您的问题。无法理解
  • Indices 是 4 x 4 数组的索引,我想在其中添加消息的元素。将消息的元素添加到这些索引后,我想将这些添加的数据元素添加到原始 4 x 4 数组中,形成一个新数组。
  • 老实说,我再清楚不过了..
  • 因此,您想要展平第一个 2D 数组,以便可以使用您的全部索引,并且您想用您生成的替换该展平数组中的 8 个值在重塑回二维数组之前,随机索引处的值?我理解正确吗?

标签: python arrays numpy random


【解决方案1】:

如果我正确理解了这个问题,我想这就是你要找的。​​p>

import numpy as np

cover = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])

max_len = cover.size

msg = np.random.randint(2, size=8)  

np.random.seed(4)
indices = np.random.choice(range(max_len), msg.size, replace=False)

cover.ravel()[indices] += msg

【讨论】:

  • 几乎!我想将味精添加到这些索引的那些元素中,而不仅仅是替换它们@roganjosh
  • 在每个索引处添加sum
  • @CharlesB 我已经进行了编辑(您只需将= 更改为+= 即可修改每个索引处的值)。这是基于我对此处“添加”的理解。
  • 原始矩阵的索引 0 为 1 现在第一个索引是消息为 0。我想添加 1+ 0 = 1 而不是用 (message[0]) 0 替换索引 [0]。并对所有其他人做同样的事情。你找到我了吗@roganjosh?
  • @CharlesB 是的,现在是 1 或 2,因为 msg 将根据选择的值将 01 添加到其中。我的编辑会解决这个问题。
猜你喜欢
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-29
  • 1970-01-01
  • 2017-09-19
  • 2022-12-20
相关资源
最近更新 更多