2017-06-30 9 views
0

条件に基づいてx、y、z点をデータベースに格納しようとしています。これらの条件はNACL structureからのものです。たとえば、xが偶数で、yとzが奇数の場合、NA原子があります。その座標はNA原子として格納されます。したがって、すべてのNA原子がどこにあるかを検索すると、座標のリストが得られます。別のスレッドはsimilar questionに答えていますが、答えはnp.whereの使用に基づいていますが、これを実装する方法はわかりません。Numpy Array:条件に基づいて座標を格納する

私の試みは、次のコードである:

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as np 

#dimension/shape of grid and array 
n = int (input("Enter CUBE dimension: ")) 

def cube(ax, n): 
    #Creating Arrays 
    parameter = np.arange(0,n,1) 
    xx, yy, zz = np.meshgrid(parameter, parameter, parameter) 
    valuesrange = np.zeros((n,n,n)) 
    #list of arrays 
    a = [(xx,yy,zz)] 
    # my attempt at the problem 
    # if xx % 2 == 0 and yy % 2 != 0 and zz % 2 !=0: 
    #  NA = [(xx,yy,zz)] 
    # elif xx % 2 != 0 and yy % 2 != 0 and zz % 2 ==0: 
    #  NA = [(xx,yy,zz)] 
    # Etc... 

    print (a) 
    scatterplot = ax.scatter(xx, yy, zz, c = valuesrange, cmap=plt.cm.spectral_r, vmin=0, vmax=1,edgecolor = 'black', alpha = .7)  
    return scatterplot 


fig = plt.figure() 
ax = fig.add_subplot(111, projection = '3d') 
ax.set_xlabel('X') 
ax.set_ylabel('Y') 
ax.set_zlabel('Z') 

scatterplot1 = cube(ax,n) 
plt.colorbar(scatterplot1) 
plt.show() 

すべてのヘルプは大歓迎です!私はあなたのコードにこれを追加することが明確に役立つだろうと思い

+1

私は混乱しています。入力したポイントごとにこの関数を呼び出すつもりですか?関数内の変数は関数のLOCALであり、関数の外部では使用できないことに注意してください。また、私はあなたの圧痕が消えていると思っています。 – mauve

+0

@mauve座標は分類されて保存されます。現時点では、関数は一度しか実行する必要がないため、ローカルに残すことができると思います。私はインデントを修正しました。ありがとうございます。 – Astupidhippo

+0

@ P。 Camilleri Reのコピーと貼り付けコード。希望が修正されました。 – Astupidhippo

答えて

0

def cube(ax, n): 
# Creating Arrays 
    parameter = np.arange(0, n, 1) 
    xx, yy, zz = np.meshgrid(parameter, parameter, parameter) 
    for coordx in range(n): 
     for coordy in range(n): 
      for coordz in range(n): 
       print('xx') 
       print(xx[coordx, coordy, coordz]) 
       print('yy') 
       print(yy[coordx, coordy, coordz]) 
       print('zz') 
       print(zz[coordx, coordy, coordz]) 
    return 

私はあなたが欠けているものだと思うがxxは、それが値の行列だ、値ではないということです。行列の各位置の値をお互いに比較する必要があります。ここにあるa link about iterating over NumPy Arrays

+0

これを読み返します。ありがとう! – Astupidhippo

関連する問題