条件に基づいて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()
すべてのヘルプは大歓迎です!私はあなたのコードにこれを追加することが明確に役立つだろうと思い
私は混乱しています。入力したポイントごとにこの関数を呼び出すつもりですか?関数内の変数は関数のLOCALであり、関数の外部では使用できないことに注意してください。また、私はあなたの圧痕が消えていると思っています。 – mauve
@mauve座標は分類されて保存されます。現時点では、関数は一度しか実行する必要がないため、ローカルに残すことができると思います。私はインデントを修正しました。ありがとうございます。 – Astupidhippo
@ P。 Camilleri Reのコピーと貼り付けコード。希望が修正されました。 – Astupidhippo