あなたがそのようなdset
を持っており、あなただけの1
値を取得したい場合は、ゼロ以外のインデックスを含む、a
の各次元のために、「配列のタプルを返しnonzero
、1を使用することができますその次元の要素。 "例えば
、我々は簡単な3D配列することができます:
>>> 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の整数値を持ち、ゼロ以外のものとしてカウントします。
最後に、我々のプロット:
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")
![demo 3d image](https://i.stack.imgur.com/4BxM6.png)
美しいを与えます。私は '(d> 3.4).nonzero()'の部分について疑問を持っていますが、dが3.4より大きい値を持つ場所を返しますか? – pter
@pter:まさに正しい。 '(d> 3.4)'はブール値配列に 'd'と同じ形を与え、' True'でエントリが3.4より大きい場合は 'False'を返します。 – DSM
甘い私はこれについて知りませんでした(通常は3dプロットが必要です...しかし、もしこれが素晴らしいのです!)thanks DSM –