簡體   English   中英

從隨機整數表中查找布爾值與列表比較

[英]Finding the boolean from a table of random integers compared to a list

輸入是:

  1. 具有 500 列和 10 行的 Panda Dataframe,其中包含一系列介於 0 和 10000(包括在內)之間的隨機整數

  2. 包含 0 到 10000 之間的 10 個隨機整數的列表

我正在尋找的輸出是:

具有 500 列和 10 行的 Panda Dataframe,它給出布爾值 true 或 false,具體取決於第 x 行中的元素是高於(true)還是低於(false)列表的第 x 個元素的數字

我能夠使用以下函數在 excel 中解決這個問題:

  1. =RANDARRAY(10,1,0,10000,TRUE)
  2. =IF(RANDARRAY(10,500,0,10000,TRUE)>A1,TRUE,FALSE)

有沒有一種優雅的方式在 python 中產生這個解決方案? 我仍然是一個初學者,正在學習更多關於 python 的知識。

感謝您的幫助

更新:使用 MSS 的解決方案,這是我的最終代碼。 你能告訴我我的代碼是否有任何錯誤嗎?

import numpy as np
import pandas as pd
import random

df = pd.DataFrame(np.random.randint(0,10000,size=(10, 500)))
df.head

list = random.sample(range(10000), 10)
print(list)

a = df.to_numpy()
b = np.array(list) 
res = pd.DataFrame(a > b[:,None], index= df.index, columns=df.columns)
print(res)

感謝您的幫助

您可以使用 numpy 以這種方式執行此操作。

a = df.to_numpy() # Dataframe of shape (10,500)
b = np.array(your_list) # your_list contains 10 random numbers >=1 and <=10000
res = pd.DataFrame(a > b[:,None], index= df.index, columns=df.columns)

讓我們使用一個具有 3 行和 5 列的較小數據框和一個具有 3 個數字的列表來解釋。 所有數字都是 1-9 之間的隨機數。

inter = np.array([[1,2,3,5],[4,5,6,1],[7,8,9,5]])
df = pd.DataFrame(inter)
your_list = [3,6,7]

應用上述代碼后得到的輸出為:

    0       1       2       3
0   False   False   False   True
1   False   False   False   False
2   False   True    True    False

因此解決方案是正確的。

暫無
暫無

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

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