这与3D打印无关,同样的问题也存在于
matplotlib.scatter
也实际上有两个问题。第一个是
不同的
carr
的内部类型不同
。请注意,这将失败:
import numpy as np
import pylab as plt
# This fails since carr[0,0] is of type numpy.int64
carr = np.array([[0,0,0,1],[0,0,1,1],[0,1,0,1]]) # RGBA color array
carr[1] = np.repeat(np.nan,4)
pts = np.array([[1,2],[1,3],[2,2]]).T
plt.scatter(pts[0],pts[1],c=carr,s=500)
在下一种情况下,如果我们强制
卡尔
成为
numpy.float
我们可以绘制,但如前所述
nan
的显示为黑点:
# This works but still puts a black dot for the nan point
carr = np.array([[0.0,0,0,1],[0,0,1,1],[0,1,0,1]]) # RGBA color array
carr[1] = np.repeat(np.nan,4)
pts = np.array([[1,2],[1,3],[2,2]]).T
plt.scatter(pts[0],pts[1],c=carr,s=500)
如果我们定义一个掩码,我们可以索引我们想要的点。这是处理numpy数组时的首选方法:
carr = np.array([[0.0,0,0,1],[0,0,1,1],[0,1,0,1]]) # RGBA color array
carr[1] = np.repeat(np.nan,4)
pts = np.array([[1,2],[1,3],[2,2]]).T
idx = ~np.isnan(carr[:,0])
plt.scatter(pts[0][idx],pts[1][idx],c=carr[idx],s=500)
并排显示两个案例: