程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python中numpy.random.choice()函數

編輯:Python

numpy.random.choice

  • 菜鳥教程
    • 描述
    • 語法
    • 參數
    • 返回值
    • 實例
  • 官方文檔
    • 介紹
    • 參數
    • 實例
  • 擴展閱讀
    • 先看numpy中choice()
    • 再看random中choice()和choices()
    • 最後看下random.sample()

菜鳥教程

描述

choice() 方法返回一個列表,元組或字符串的隨機項。

語法

以下是 choice() 方法的語法:

import random
random.choice( seq )

注意:choice()是不能直接訪問的,需要導入 random 模塊,然後通過 random 靜態對象調用該方法。

參數

seq -- 可以是一個列表,元組或字符串。

返回值

返回隨機項。

實例

以下展示了使用 choice() 方法的實例:

#!/usr/bin/python
import random
print "choice([1, 2, 3, 5, 9]) : ", random.choice([1, 2, 3, 5, 9])
print "choice('A String') : ", random.choice('A String')

以上實例運行後輸出結果為:

choice([1, 2, 3, 5, 9]) : 2
choice('A String') : n

官方文檔

介紹

random.choice()函數:從給定的1維數組中隨機采樣的函數。

參數

numpy.random.choice(a, size=None, replace=True, p=None)
  • a : 如果是一維數組,就表示從這個一維數組中隨機采樣;如果是int型,就表示從0到a-1這個序列中隨機采樣。

  • size :采樣結果的數量,默認為1.可以是整數,表示要采樣的數量;也可以為tuple,如(m, n, k),則要采樣的數量為m *n *k, size為(m, n, k)。

  • replace : boolean型,采樣的樣本是否要更換?這個地方我不太理解,測了一下發現replace指定為True時,采樣的元素會有重復;當replace指定為False時,采樣不會重復。

  • p : 一個一維數組,制定了a中每個元素采樣的概率,若為默認的None,則a中每個元素被采樣的概率相同。

注意:
replace 代表的意思是抽樣之後還放不放回去,如果是False的話,那麼出來的三個數都不一樣,如果是True的話,有可能會出現重復的,因為前面的抽的放回去了。
p 中值的個數必須和a中數據的個數一致。

返回值:samples : single item or ndarray(The generated random samples)

ValueError:
If a is an int and less than zero, if a or p are not 1-dimensional, if a is an array-like of size 0, if p is not a vector of probabilities, if a and p have different lengths, or if replace=False and the sample size is greater than the population size

實例

從大小為3的np.arange(5)生成一個均勻(p=None)的隨機樣本:

>>> np.random.choice(5, 3)
array([0, 3, 4])
>>> #This is equivalent to np.random.randint(0,5,3)

從大小為3的np.arange(5)生成一個非均勻(p有值)的隨機樣本:

>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0])

從大小為3的np.arange(5)生成一個均勻的隨機樣本,沒有替換(重復):

>>> np.random.choice(5, 3, replace=False)
array([3,1,0])
>>> #This is equivalent to np.random.permutation(np.arange(5))[:3]

從大小為3的np.arange(5)生成一個非均勻的隨機樣本,沒有替換(重復):

>>> np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
array([2, 3, 0])

上面例子中第一個參數都可以用一個任意的數組來代替,而不僅僅是整數。例如:

>>> aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
>>> np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])
array(['pooh', 'pooh', 'pooh', 'Christopher', 'piglet'],
dtype='|S11')

實際使用中,首先創建一個mask變量,然後通過mask來對需要采樣的數據進行采樣:

 mask = np.random.choice(split_size, batch_size)
captions = data['%s_captions' % split][mask]
image_idxs = data['%s_image_idxs' % split][mask]

擴展閱讀

python中choice對比(在numpy和random中均出現過)外加sample()函數對比

先看numpy中choice()

再看random中choice()和choices()


最後看下random.sample()


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved