簡體   English   中英

Python 3(jupyter筆記本)中的random.sample

[英]random.sample in Python 3 (jupyter notebook)

使用Canopy時,我可以做

from scipy import *
import pylab as py
import random

aa = random.sample(arange(1,4,0.5),1)

而在Jupyter筆記本中,它抱怨以下內容:

  ---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-59-e33979a68ee1> in <module>()
----> 1 cc = random.sample(arange(1,4,0.5), 1)

/u/rscratch/bm485/anaconda3/lib/python3.5/random.py in sample(self, population, k)
309             population = tuple(population)
310         if not isinstance(population, _Sequence):
--> 311             raise TypeError("Population must be a sequence or set.  For dicts, use list(d).")
312         randbelow = self._randbelow
313         n = len(population)

TypeError: Population must be a sequence or set.  For dicts, use list(d).

我怎樣才能解決這個問題?

請盡可能避免進口星星。 最終,通常不清楚您實際導入和隱藏了什么。

import random
from scipy import *
print(random)

得到:

<module 'numpy.random' from '/Users/ch/miniconda/envs/sci34/lib/python3.4/site-packages/numpy/random/__init__.py'>

from scipy import *
import random
print(random)

打印:

<module 'random' from '/Users/ch/miniconda/envs/sci34/lib/python3.4/random.py'>

帶回家的消息:

最好from scipy import <subpackage> import scipy as sp或更好from scipy import <subpackage>以避免陰影您的隨機函數。 感謝@ ev-br的發言。


如果您正在處理numpy的ndarray,則首選numpy.random中的方法, numpy.random不是python的random模塊中的計數器部分。 您在這里看到的問題是python和numpy對序列的定義不同。 有關更多詳細信息,請參見此處的討論: https : //github.com/numpy/numpy/issues/2776

您想要的可能是np.random.choice

numpy.random.choice(a, size=None, replace=True, p=None)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM