そのdset
ようなものがあり、単に値を取得したい1
場合は、 を使用できます。これは、「その次元の非ゼロ要素のインデックスを含む、 の nonzero
各次元に 1 つずつ、配列のタプルを返します。」.a
たとえば、単純な 3 次元配列を作成できます。
>>> import numpy
>>> numpy.random.seed(29)
>>> d = numpy.random.randint(0, 2, size=(3,3,3))
>>> d
array([[[1, 1, 0],
[1, 0, 0],
[0, 1, 1]],
[[0, 1, 1],
[1, 0, 0],
[0, 1, 1]],
[[1, 1, 0],
[0, 1, 0],
[0, 0, 1]]])
非ゼロ要素が配置されている場所を見つけます。
>>> d.nonzero()
(array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2]), array([0, 0, 1, 2, 2, 0, 0, 1, 2, 2, 0, 0, 1, 2]), array([0, 1, 0, 1, 2, 1, 2, 0, 1, 2, 0, 1, 1, 2]))
>>> z,x,y = d.nonzero()
より複雑なカットが必要な場合は(d > 3.4).nonzero()
、True の整数値が 1 であり、0 以外としてカウントされるため、次のようなことを行うこともできます。
最後に、次のようにプロットします。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, -z, zdir='z', c= 'red')
plt.savefig("demo.png")
与える