我遇到了问题,我认为原因是由于插入功能的性质。文档说插入是这样工作的:
list.insert(index, object)
这里的重点是“对象”。为了执行适用于值的 if 语句,我将原始列表转换为数组。该数组的数据类型由 python 自动计算如下:
In [25]: MinorTrendTypeArr.dtype
Out[25]: dtype('int64')
但是在列表中插入所需的项目后
MinorTrendType
新阵列,
MinorTrendTypeArr2
如前所述,这一定是因为插入函数将对象项添加到列表中的方法。有数据类型
In [25]: MinorTrendTypeArr2.dtype
Out[25]: dtype('object')
尝试转换时收到以下错误进一步证明了这一点
MinorTrendType
变量到新数组中。
In [27]: run triptrade.py
This is the length of MinorTrendType the first time = 12356
This is the length of MinorTrendType after adding plustwos elements = 13179
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc in execfile(fname, *where)
173 else:
174 filename = fname
--> 175 __builtin__.execfile(filename, *where)
/home/kane/tripkane_python/triptrade.py in <module>()
579
580 MinorTrendArr2 = np.array(MinorTrend, dtype = np.int64)
--> 581 MinorTrendTypeArr2 = np.array(MinorTrendType, dtype = np.int64)
582
583
ValueError: setting an array element with a sequence.
但是在没有输入外部值的变量中不会出现同样的问题。我认为可能有更好的做事方式,但我目前正在利用我非常有限的知识来取得进展。任何帮助,替代方案的建议都将受到欢迎。注意:我不能在一个循环中输入所有必需的值,因为输入项目会改变列表的长度,除非如上所述有更简单的解决方法。
提前致谢,
凯恩
for n in range(0, len(MinorTrendType)):
if MinorTrendTypeArr[n] == 2:
plustwos.append(n)
pl = []
mi = []
PS1 = len(MinorTrendType)
print "This is the length of MinorTrendType the first time = %d" %PS1
for n in range(0, len(plustwos)):
bbgun = plustwos[n] + len(plustwos[0:n])
pl.append(bbgun)
MinorTrendType.insert(pl[n], 22)
MinorTrend.insert(pl[n], MinorTrend[pl[n]])
PS2 = len(MinorTrendType)
print "This is the length of MinorTrendType after adding plustwos elements = %d" %PS2
MinorTrendArr2 = np.array(MinorTrend, dtype = np.int64)
MinorTrendTypeArr2 = np.array(MinorTrendType, dtype = np.int64)
更新/编辑:
MinorTrendType
是一个整数列表,如下所示: MinorTrendType = [1,0,-1,1,0,-1,2,-1,1,-1,0,0,0,2,1,0,0,- 1,2,1,0,-2…………]
MinorTrend
是存在 MinorTrendType 值的索引列表(这些只是满足某些条件)。我想要实现的只是在 MinorTrendType 中每次出现 2 和 -2 值时插入标记,并在 MinorTrend 中的相应位置重复索引值我尝试在循环中使用 map(i, x) int(MinorTrendType[n])并列出和列出理解没有成功。我希望这能让事情更清楚。我不在乎它是如何完成的,只想实现它:)