【问题标题】:accessing columns within an array within a for loop在 for 循环中访问数组中的列
【发布时间】:2012-01-04 19:51:18
【问题描述】:

下面是创建多组 0 并用随机数填充的代码,然后我取第一列并计算最大值,问题是我需要能够为每一行(即第 2 行)执行此操作通过 10) 我尝试将其放入 for 循环,但它不适用于传统的 y=1, mx[:,y], y = y+1

谁能提供一些帮助?干杯

import pylab

mx = pylab.zeros ((10,6))

for j in range(0,10):
    mx[j] = pylab.randn()

p = mx[:,1]
a = max (p)

【问题讨论】:

  • 关于您最近的编辑,如果您有令人信服的理由,请标记您的问题(点击flag,然后选择other)并告诉我们。我暂时锁定它。

标签: python arrays numpy matplotlib


【解决方案1】:

如果您正在寻找 rows 2 到 10 的最大值, 然后使用mx.max(axis=1) 查找所有行的最大值,然后将其切分到第 2 到第 10 行:

mx.max(axis=1)[2:]

例如,如果

In [38]: mx = np.arange(60).reshape((10, 6))

In [39]: mx
Out[39]: 
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35],
       [36, 37, 38, 39, 40, 41],
       [42, 43, 44, 45, 46, 47],
       [48, 49, 50, 51, 52, 53],
       [54, 55, 56, 57, 58, 59]])

然后

In [40]: mx.max(axis=1)[2:]
Out[40]: array([17, 23, 29, 35, 41, 47, 53, 59])

最后,正如 larsman 已经展示的那样,您可以使用mx = np.random.randn(10, 6) 制作随机矩阵。

【讨论】:

  • 这个非常好用,我现在在import pylab mx=pylab.arange(60) mx = pylab.randn (10,6)>print mx y = mx.max(axis=1) print y的阶段
  • 在每列中产生最大值,我现在需要计算出如何计算达到新最大值的概率,即在第一列中,有 100% 的机会出现新的最大值最大值,在第二列中有 50% 的机会出现新的最大值等。唯一的方法是编写代码,告诉我第二列中有多少值大于最大值第一栏等,有什么想法吗? @unutbu
【解决方案2】:
import numpy as np
mx = np.random.randn(10, 6)
np.max(mx, axis=0)

我采用了使用 NumPy 代替 Pylab 的库;无论如何,这就是 Pylab 在内部使用的。也可以用pylab.amax代替np.max,功能完全一样。

【讨论】:

  • 这只会打印出第一列的最大值很多次,我需要第 1 列的第一个最大值,然后是第 2 列的最大值,然后是第三个等(假设值继续高于前几列)有什么想法吗?
  • @user1114835:如果这“打印出第一列最大值一整堆时间”,那么要么你的随机数不走运,要么你在复制粘贴时出错了。除了“假设”部分之外,此代码为您提供了您想要的内容;你需要为此编写一个循环。
猜你喜欢
  • 2016-10-29
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 2017-11-06
  • 2020-07-30
相关资源
最近更新 更多