TypeError: only integer scalar arrays can be converted to a scalar index一例

问题重现:

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
# @Author: appleyuchi
# @Date:   2018-12-31 16:11:34
# @Last Modified by:   appleyuchi
# @Last Modified time: 2018-12-31 16:54:56

import numpy as np
from hmmlearn import hmm

states = ["box 1", "box 2", "box3"]
n_states = len(states)

observations = ["red", "white"]
n_observations = len(observations)

start_probability = np.array([0.2, 0.4, 0.4])

transition_probability = np.array([
  [0.5, 0.2, 0.3],
  [0.3, 0.5, 0.2],
  [0.2, 0.3, 0.5]
])

emission_probability = np.array([
  [0.5, 0.5],
  [0.4, 0.6],
  [0.7, 0.3]
])

model = hmm.MultinomialHMM(n_components=n_states)
model.startprob_=start_probability
model.transmat_=transition_probability
model.emissionprob_=emission_probability


seen = np.array([[0,1,0]]).T

logprob, box = model.decode(seen, algorithm="viterbi")
# print "observations=",observations
print "seen=",seen

# TypeError: only integer scalar arrays can be converted to a scalar index

print("The ball picked:", ", ".join(map(lambda x: observations[x], seen)))
print("The hidden box", ", ".join(map(lambda x: states[x], box)))

解决方案:


print("The ball picked:", ", ".join(map(lambda x: observations[x], seen)))

改为:

print("The ball picked:", ", ".join(map(lambda x: observations[x], seen[0])))

你可能感兴趣的:(Python)