我有以下2d阵列:
['AA' 'Call' 1]
['AAL' 'Call' 1]
['AAL' 'Put' 1]
['AAP' 'call' 1]
['AAPL' 'Call' 13]
['AAPL' 'Put' 11]
['AAWW' 'Call' 1]
['ABBV' 'put' 1]
['ABNB' 'Call' 2]
['ABNB' 'Put' 2]
['ABT' 'Call' 2]
['ACB' 'Call' 5]
['ACB' 'Put' 15]
这是我想要的样子
['AA' 'Call' 1]
['AA' 'put' 0]
['AAL' 'Call' 1]
['AAL' 'Put' 1]
['AAP' 'call' 1]
['AAP' 'put' 0]
['AAPL' 'Call' 13]
['AAPL' 'Put' 11]
['AAWW' 'Call' 1]
['AAWW' 'Put' 0]
['ABBV' 'Call' 0]
['ABBV' 'put' 1]
['ABNB' 'Call' 2]
['ABNB' 'Put' 2]
['ABT' 'Call' 2]
['ABT' 'put' 0]
['ACB' 'Call' 5]
['ACB' 'Put' 15]
如果调用或put缺失,我想将缺失的值加上零。 以下是我的尝试:
i = 0
while i < len(arr):
if(i+1<len(arr) and i>0):
if((arr[i][0]!=arr[i+1][0]) and (arr[i-1][0]!=arr[i][0])):
if(arr[i][1]=='Call'):
ticker = arr[i][0]
val = [ticker,'Put','0']
arr = np.insert(arr, i+1,val)
i += 1
elif(arr[i][1]=='Put'):
ticker = arr[i][0]
val = [ticker,'Call','0']
arr = np.insert(arr, i-1,val)
i +=1
i += 1
订单必须先进行催缴,然后进行看跌期权。我错过了什么
这里有一个解决方案:
请注意,您需要考虑列表中的最后一项(即
i+1
超出范围时)您的主要问题是
np.insert
。默认情况下,它首先展平数组,然后插入新数据,因此在第一次插入后,数组变为1D,第二个索引开始应用于第一个索引返回的字符串元素。这就是错误的原因。如果您使用arr[i, 0]
而不是arr[i][0]
,那么您应该更早地理解它。 要避免展平,需要指定一个轴,沿该轴插入新值。在您的情况下,它是轴0,因此您需要即使在这之后,结果也与您发布的示例不同,原因在于您使用的条件。我不知道哪一个是错的:例子还是条件,但相信你自己能解决它
相关问题 更多 >
编程相关推荐