我一直在尝试运行提供的代码来制作颜色贴图。
数据集有x
和y
坐标,每个坐标都有自己的颜色。
但是,当我运行代码时,出现错误setting an array element with a sequence
。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from math import pi, sin
x, y, c = np.loadtxt('finaltheta.txt', unpack = True)
N = int(len(c)**0.5)
c = c.reshape(N,N)
plt.figure()
plt.imshow(c, extent = (np.amin(x), np.amax(x), np.amin(y), np.amax(y)), cmap = cm.binary, vmin = 0.0, vmax = 1.0)
cbar = plt.colorbar()
plt.show()
我推断错误来自np.loadtxt
行。
答案 0 :(得分:0)
文件中的分隔符是什么?
我可以用以下方式模拟这种负载:
In [223]: txt=b"1 2 3\n4 5 6".splitlines()
In [224]: a,b,c=np.loadtxt(txt,unpack=True)
In [225]: a
Out[225]: array([ 1., 4.])
In [226]: b
Out[226]: array([ 2., 5.])
In [227]: c
Out[227]: array([ 3., 6.])
或者带有分隔文字
In [228]: txt=b"1,2,3\n4,5,6".splitlines()
In [229]: a,b,c=np.loadtxt(txt,unpack=True,delimiter=',')
如何推断错误在loadtxt中?通常,错误会为您提供堆栈跟踪,以清楚地指示错误发生的位置。它可能在loadtxt
中,但如果是这样,则跟踪显示它确实是加载文本调用。
我无法想到会在loadtxt中产生此错误的文本。错误意味着某事/某人正在做类似
的事情In [236]: a[0]=[1,2,3]
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-236-c47480f4cd6d> in <module>()
----> 1 a[0]=[1,2,3]
ValueError: setting an array element with a sequence.
loadtxt sequence
引发了SO问题,例如
CDF Cumulative Distribution Function Error
使用stacktrace报告错误:
Traceback (most recent call last):
File "cum_graph.py", line 7, in <module>
data = np.loadtxt('e_p_USC_30_days.txt')
File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 804, in loadtxt
X = np.array(X, dtype)
ValueError: setting an array element with a sequence.
还有一个文件样本。不幸的是,接受的答案只是试图提出一个原因。我也无法重现错误。这表明文件中的字符没有在cutnpaste中复制和/或用户有较旧的numpy版本和/或存在操作系统问题(我在linux上)。
看看804行的输入是什么样子,但这需要一个可重复的案例,然后黑客加载文本或用调试器运行它将是有意义的。
我在一个更简单的专用文件上尝试loadtxt
,或者在问题文件的一部分上尝试它。我也尝试genfromtxt
。在大多数情况下,它与加载一样,但采用了一种完全不同的方法,它可以绕过loadtxt的问题。
答案 1 :(得分:-1)
我不完全确定,但序列会引用x,y,c。而数组是文件。如果你真的需要三个变量与文件,我会分别给他们的价值
x = np.loadtext('finaltheta.txt')
您必须将其拆分才能使其正常工作。
y = np.loadtext('finaltheta.txt')
c = np.loadtext('finaltheta.txt')