Eli Borodach - 1 year ago 74

Python Question

I have a problem with random.choice which I can't understand. I pass 3 arguments to the function which is allowed to have 4 (http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.random.choice.html), but it writes I am allowed to give only 2 and 4 were given.

`def load_data():`

dataset = load_boston()

num_samples = size(dataset.data, 0)

test_set_sz = int(1.0 * num_samples / 10)

tst_sub_inds = random.choice(range(num_samples), test_set_sz, False)

data_test, label_test = dataset.data[tst_sub_inds, :], dataset.target[tst_sub_inds]

trn_sub_inds = list(set(range(num_samples)) - set(tst_sub_inds))

data_train, label_train = dataset.data[trn_sub_inds, :], dataset.target[trn_sub_inds]

return ((data_train, label_train), (data_test, label_test))

The Error:

tst_sub_inds = random.choice(range(num_samples), test_set_sz, False)

TypeError: choice() takes 2 positional arguments but 4 were given

Blockquote

What is the problem? Maybe it due to an old version of python?

Thanks,

Eli

Answer

As you clarified in the comments, you are using `import random`

which imports Python's random library.

You should use `from numpy import random`

, which will import Numpy's `random.choice`

which is the one that you expect.

Source (Stackoverflow)