2

100X100 の配列を考えてみましょう。

i) そのような配列内の数千のランダム位置の配列を生成します (例: (3,75) および (56, 34))。

ii) ランダムな位置の 1 つが、任意の (直線) エッジから 15 ピクセル以内に収まる頻度を計算します。

プログラミング言語 Python の学習を支援するために、上記の質問をしようとしています。プログラミングは初めてです。

これが私がこれまでに得たものです:

from __future__ import division
from pylab import *
import math as m
from numpy import *
from random import randrange

N = 3000
coords_array = array([randrange(100) for _ in range(2 * N)]).reshape(N, 2)

これにより、N 個のランダムな位置の配列が作成されます。いいえ、x>85 または y>85 または x<15 または y<15 の場合に空のリストに 1 を追加し、次にゼロを追加するループを作成しようとしています。 x または y がそれ以外の場合、同じ空のリスト。次に、リストの合計を見つけます。これは、エッジ内にあるランダムな場所の数のカウントになります。

これは私がやろうとしていることのようなものです:

coordinate=coords_array[x,y]
b=[]
def location(x,y):
    if x>85 or y>85:
        b.appnend(1)
    if x<15 or y<15:
        b.append(1)
    else:
        b.append(0)


print b
print x

しかし、配列を x および y 変数として割り当てるのに問題があります。ランダム座標のセットの各行を x、y ペアとして割り当てて、ループで使用できるようにしたいと考えています。

しかし、私はそれを行う方法がわかりません!

誰かがそれを行う方法を教えてください。

ありがとうございました

4

2 に答える 2

1

numpy にループをさせることができます:

n = 3000
coords = np.random.randint(100, size=(n, 2))
x, y = coords.T
is_close_to_edge = (x < 15) | (x >= 85) | (y < 15) | (y >= 85)
count_close_to_edge = np.sum(is_close_to_edge)

100 要素の配列の最初のインデックスは 0 で、最後の 99 であることに注意してください。したがって、エッジの 15 位置内の項目は 0...14 および 85...99 であり、したがって>=比較では . 上記のコードでis_close_to_edgeは、ブール値を持つリストです。

于 2013-04-10T13:16:41.080 に答える