【问题标题】:Sum of elements within an array within list列表中数组内元素的总和
【发布时间】:2017-09-03 05:02:38
【问题描述】:

我正在尝试计算每个数组中元素的 np.sum。我尝试代替np.sum(outcome_list[0] == 'H' 将其保留为np.sum(outcome_list[j] == 'H',以便每个“列表”都有自己的关于正面总数的数据集,但它不喜欢它。更大的问题是,我将如何构造一个具有给定基本列表的数组以及要在该列表的每个元素中执行的操作?

编辑:

throw_a_coin 定义

def throw_a_coin(N):
    return np.random.choice(['H','T'], size=N)
N =40

试验(如上所示)是要采取行动的集合

for i in trials:
    throws = throw_a_coin(i)
    outcome_list.append(throws)

for j in outcome_list:
    print("Number of Heads:", np.sum(outcome_list[0] == 'H'))
    print (j)

编辑 2:

问题已通过下图解决,但是我得到了超过 13 个“概率”数字 - 似乎系统不止一次地通过试验列表运行。

def throw_a_coin(N):
    return np.random.choice(['H','T'], size=N)

trials = [10, 30, 50, 70, 100, 130, 170, 200, 500, 1000, 2000, 5000, 10000]

for i in trials:
    throws = throw_a_coin(i)
    outcome_list.append(throws)

probabilities = []

for j in outcome_list:
    print("Number of Heads:", np.sum(j == 'H'))
    print("Number of Throws:", len(j))
    print("p = Number of Heads/Total Throws:", (np.sum(j == 'H'))/len(j))
    probabilities.append((np.sum(j =='H'))/len(j))
    print (j)
    print("\n")

print(probabilities)

【问题讨论】:

  • 你是在数正面的数量吗?
  • 能否附上代码而不是代码的照片?
  • @Rishav - 是的,计算每次试验的正面数
  • @Sohum Sachdev - 添加了代码的编辑帖子

标签: python arrays list sum


【解决方案1】:

你就快到了!你只需要更换

print("Number of Heads:", np.sum(outcome_list[0] == 'H'))

print("Number of Heads:", np.sum(j == 'H'))

这是完整的答案:

trials = [10, 30, 50, 70, 100, 130, 170, 200, 500, 1000, 2000, 5000, 10000]

N =40
def throw_a_coin(N):
    return np.random.choice(['H','T'], size=N)

outcome_list = []
for i in trials:
    throws = throw_a_coin(i)
    outcome_list.append(throws)

for j in outcome_list:
    print("Number of Heads:", np.sum(j == 'H'))
    print (j)

【讨论】:

  • 我还在问题中添加了“EDIT 2” - 似乎它不止一次地通过“试验”?
【解决方案2】:

试试这个:

print("Number of Heads:", (j == 'H').sum())

【讨论】:

    【解决方案3】:

    如果output_list 是一个 numpy 数组,并且如果矩阵中的每一行代表每个试验,您可以通过以下有效方式获得总和:

    head_sum = output_list.sum(axis=1)
    

    【讨论】:

      【解决方案4】:

      我会使用列表解析,然后是 len 调用。

      for j in outcome_list:
          print("Number of Heads:", len([x for x in j if x == 'H'])
          print (j)
      

      免责声明:我对 Numpy 的经验为零。但是,这将是一种通用的 Pythonic 方式,无需借助 count

      【讨论】:

      • 这很好,但我会推荐sum(1 for x in j if x == 'H') 通过使用生成器推导,我们可以避免实际构建Hs 的列表。这是一个微小的差异,但我只是想我会提到它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 2022-10-21
      • 1970-01-01
      相关资源
      最近更新 更多