如何在python 3.3的numpy中的nditer中启用REFS_OK标志?

gwi*_*ymh 5 flags numpy ref python-3.x

有谁知道如何在numpy中启用REFS_OK标志?我似乎无法在网上找到明确的解释。

我的代码是:

import sys
import string
import numpy as np
import pandas as pd
SNP_df = pd.read_csv('SNPs.txt',sep='\t',index_col = None ,header = None,nrows = 101)
output = open('100 SNPs.fa','a')
for i in SNP_df:
    data = SNP_df[i]
    data = np.array(data)
    for j in np.nditer(data):
        if j == 0:
            output.write(("\n>%s\n")%(str(data(j))))
        else:
            output.write(data(j))
Run Code Online (Sandbox Code Playgroud)

我不断收到错误消息:迭代器操作数或请求的dtype保留引用,但未启用REFS_OK。

我无法解决如何启用REFS_OK标志,以便程序可以继续...

gwi*_*ymh 4

我已经隔离了这个问题。无需使用 np.nditer。主要问题是我误解了 Python 如何在 for 循环中读取迭代器变量。更正后的代码如下。

import sys
import string
import fileinput
import numpy as np

SNP_df = pd.read_csv('datafile.txt',sep='\t',index_col = None ,header = None,nrows = 5000)
output = open('outputFile.fa','a')

for i in range(1,51): 
    data = SNP_df[i]
    data = np.array(data)
    for j in range(0,1): 
        output.write(("\n>%s\n")%(str(data[j])))
    for k in range(1,len(data)):
        output.write(str(data[k]))
Run Code Online (Sandbox Code Playgroud)