[英]numpy.sum with conditional
在以下代碼中:
def compute_class_freqs():
"""
Compute positive and negative frequences for each class.
Returns:
positive_frequencies (np.array): array of positive frequences for each
class, size (num_classes)
negative_frequencies (np.array): array of negative frequences for each
class, size (num_classes)
"""
### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###
labels = [[0,1,0],[1,1,1],[0,1,1]]
print(labels)
# total number of patients (rows)
N = labels[0]
positive_frequencies = None
negative_frequencies = None
### END CODE HERE ###
return positive_frequencies, negative_frequencies
我想將每行中 1 的數量相加並將每個和附加到 positive_frequencies,並將每行中 0 的數量相加並將每個和附加到negative_frequencies。 如何使用 numpy 函數 numpy.sum() 和 numpy.where() 來做到這一點?
編輯:positive_frequencies 應該是每列中 1 的數量除以總行數,負頻率應該是每列中 0 的數量除以總行數。 基本上,該函數應該返回 numpy 浮點數組。
我認為這可能有效,我知道您的評論中已經有了答案,而且這不使用 np.sum 或 np.where,但我想我會分享沒有 numpy 的情況下我將如何做到這一點:
labels = [[0,1,0],[1,1,1],[0,1,1]]
positive_frequencies = [len([num for num in listOfNums if num == 1])/len(listOfNums) for listOfNums in labels]
negative_frequencies = [len([num for num in listOfNums if num == 0])/len(listOfNums) for listOfNums in labels]
print(positive_frequencies, negative_frequencies)
這讓我得到了以下輸出:
[1, 3, 2] [2, 0, 1]
但是,如果你想要一個 numpy 數組,你可以試試這個:
import numpy as np
labels = [[0,1,0],[1,1,1],[0,1,1]]
positive_frequencies = np.fromiter([len([num for num in listOfNums if num == 1])/len(listOfNums) for listOfNums in labels], dtype=np.float16)
negative_frequencies = np.fromiter([len([num for num in listOfNums if num == 0])/len(listOfNums) for listOfNums in labels], dtype=np.float16)
print(positive_frequencies, negative_frequencies)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.