1
import numpy as np
import itertools
a = np.array([[1, 1, 3, 0, 0, 3, 2], [1, 3, 0, 0, 0, 3, 2], [1, 1, 10, 0, 0, 1, 0]])
for row in a:
    sites = a.shape[0]
    species = a.shape[1]
    Chao = []
    sing = np.where(row == 1, 1, 0)
    doub = np.where(row == 2, 1, 0)
    spec = np.where(row > 0, 1, 0)
    F1 = (sum(sing))**2
    F2 = float((sum(doub)))*2
    Sobs = sum(spec)
    if F2 == 0:
        Ch = Sobs
    else:
        Ch = Sobs + (F1/F2)
    Chao.append(Ch)
    print Chao

このループの製品であるChaoを印刷すると、現在次のようになっています。

[7] [4.5] [4]

ただし、次のような配列またはリストが必要です。

([7] [4.5] [4])

numpyまたはlistのどの関数でPythonでこれを実行できますか?

4

1 に答える 1

1

ロジックは正しいです。Chao リストは、ループの外で初期化する必要があります。

于 2012-04-26T04:34:14.877 に答える