0
3列の大きな3列の配列を作成し、乱数で埋めています。次に、行を索引付けし、条件に一致しない行を削除します。何らかの理由で、私を通して私のインデックスは次のエラーを取得するよう: Traceback (most recent call last): File "hw_2.py", line 16, in <module> if math.sqrt(cube[y,0]**(2) + cube[y,1]**(2) + cube[y,2]**(2)) > 1: IndexError: index 6786 is out of bounds for axis 0 with size 6786
ナンシーアレイのサイズは縮小しており、ランダムに変化しています。インデックスが範囲外になるエラー
私のコードは次のとおりです:
import numpy as np
import math
#Create a large empty array that can be filled with random numbers
cube=np.empty([10000,3]);
#Fill the array with 1x3 (x,y,z) randos in a 1x1 cube
for x in xrange(0,10000):
cube[x] = np.random.uniform(-1,1,3)
#Consider each coordinate as a vector from the origin; reject all sets of x,y,z vectors whose magnitudes are greater than the radius of the sphere
for y in xrange(0,10000):
if math.sqrt(cube[y,0]**(2) + cube[y,1]**(2) + cube[y,2]**(2)) > 1:
cube = np.delete(cube, (y), axis=0)
#Reject all sets of vectors whose x,y components lay in a circle in the x,y plane of radius 0.25
for i in xrange(0,10000):
if cube[i,0] > 0 and cube[i,0]**(2) + cube[i,1]**(2) <= 0.25:
cube = np.delete(cube, (i), axis=0)
#Report the average of all coordinates in each plane, this will be the location of the center of mass
centermass = np.mean(cube, axis=0)`
軸の大きさがで10,000未満になる理由を私は理解していませんこの時点では、10,000行すべてが2番目のコマンドで満たされます。
残りの行を反復処理を継続しながら、あなたのアレイの行を削除しています。これにより、配列のサイズが小さくなります。これは 'np.delete()'への最初の呼び出しの直後に 'print(cube.shape)'を置くことで簡単に見ることができます。これは配列のサイズを10000 – DavidG
'キューブ[y、0]'インデックス現在の 'cube'配列ではなく、元のものです。 'delete'は呼び出しごとに新しい小さなコピーを作成します。 – hpaulj