numpy nd数组的负数

时间:2016-04-21 15:17:31

标签: python numpy

连接问题Plot 2D Numpy Array, 我想绘图:

tdos = np.transpose(tdos)
#  plot
plt.plot(tdos[0], tdos[1])
plt.plot(tdos[0], -1.0*tdos[2]) # here, basically, I need the plot upside down

这是错误的:

   plt.plot(tdos[0], -1*tdos[2])
TypeError: unsupported operand type(s) for *: 'int' and 'numpy.ndarray'

我不明白为什么。虽然错误很清楚。

转置的tdos看起来像:

[['-3.463' '-3.406' '-3.349' ..., '10.594' '10.651' '10.708']
 ['0.0000E+00' '0.0000E+00' '-0.2076E-29' ..., '0.2089E+02' '0.1943E+02'
  '0.2133E+02']
 ['0.0000E+00' '0.0000E+00' '-0.3384E-30' ..., '0.3886E+02' '0.3915E+02'
  '0.3670E+02']
 ['0.0000E+00' '0.0000E+00' '-0.1181E-30' ..., '0.9742E+03' '0.9753E+03'
  '0.9765E+03']
 ['0.0000E+00' '0.0000E+00' '-0.1926E-31' ..., '0.9664E+03' '0.9687E+03'
  '0.9708E+03']]

1 个答案:

答案 0 :(得分:0)

当你想要用一个倒轴做一个散点图时,我有点困惑为什么你提出了numpy二维数组问题。如果您确实需要数据的二维图,请尝试imshow:

plt.imshow(tdos)

这将使你的numpy数组自行颠倒,因为它会自动开始在左上角绘图(用于图像数据)。

要正常绘制数组,您可以使用:

plt.imshow(tdos, origin="low")

如果你真的想要一个反转一个轴的散点图:

plt.plot(tdos[0], tdos[2])
plt.gca().invert_yaxis()

Reverse Y-Axis in PyPlot一样。对我而言,这比乘以-1更清洁,但这也会有效。