如何在Python3.3的numpy中启用nditer中的REFS_OK标志?

如何在Python3.3的numpy中启用nditer中的REFS_OK标志?,numpy,python-3.x,flags,ref,Numpy,Python 3.x,Flags,Ref,有人知道如何在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:

有人知道如何在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))
我一直收到错误消息:迭代器操作数或请求的数据类型保留引用,但未启用REFS_OK


我无法确定如何启用REFS_OK标志以便程序可以继续…

我已经隔离了问题。不需要使用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]))

如果您真的想启用该标志,我有一个工作示例

Python 2.7、numpy 1.14.2、pandas 0.22.0

import pandas as pd
import numpy as np

# get all data as panda DataFrame
data = pd.read_csv("./monthdata.csv")
print(data)

# get values as numpy array
data_ar = data.values # numpy.ndarray, every element is a row
for row in data_ar:
    print(row)
    sum = 0
    count = 0
    for month in np.nditer(row, flags=["refs_OK"], op_flags=["readwrite"]):
        print month

你查过np.nditer文档了吗?我承认nditer的水平有点低,但医生说了如何传递旗帜,并提到了裁判好的,那么你尝试了什么?谢谢你,塞伯格。我找到了一种使用np.nditer的方法在我的例子(python 3.6,numpy 1.18.1)中,我只需将标志改为小写
flags=(“refs_ok”)