第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據(jù)另一個數(shù)組的元素復(fù)制數(shù)組的元素?

如何根據(jù)另一個數(shù)組的元素復(fù)制數(shù)組的元素?

叮當(dāng)貓咪 2022-10-18 16:11:27
pop=np.zeros((population_size,chromosome_length))for i in range(population_size):    for j in range(i,chromosome_length):        pop[i,j] = random.randint(0, 1)        poparray([[0., 1., 0., 1., 1., 1., 0., 0., 1., 1.],       [0., 0., 1., 0., 1., 0., 1., 1., 0., 0.],       [0., 0., 1., 0., 0., 1., 1., 0., 0., 1.],       [0., 0., 0., 0., 1., 0., 1., 1., 1., 0.],       [0., 0., 0., 0., 1., 0., 1., 1., 0., 1.],       [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.]])我有另一個數(shù)組expected,由未顯示的代碼生成,示例如下:array([[1.99214608],       [1.45140389],       [0.07068525],       [0.69507167],       [1.08384057],       [0.70685254]])然后,我想expected根據(jù)自定義間隔對 的值進(jìn)行分類:actual=np.zeros((population_size,1))for i in range(len(expected)):    if expected[i]>=1.5:        actual[i]=2    elif 1.5>expected[i]>=0.9:        actual[i]=1    else:        actual[i]=0actual=actual.astype(int)   total_count=int(np.sum(actual))print(total_count)[[2] [1] [0] [0] [1] [0]] 4我希望最終輸出為:array([[0., 1., 0., 1., 1., 1., 0., 0., 1., 1.],       [0., 1., 0., 1., 1., 1., 0., 0., 1., 1.],       [0., 0., 1., 0., 1., 0., 1., 1., 0., 0.],       [0., 0., 0., 0., 1., 0., 1., 1., 0., 1.]])基于 中的值total_count。第一行pop被復(fù)制兩次,第二行一次,第五行一次。簡而言之,我想要的是基于另一個數(shù)組的整數(shù)元素重復(fù)/復(fù)制/復(fù)制數(shù)組的元素。
查看完整描述

1 回答

?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗 獲得超4個贊

當(dāng)您使用 NumPy 數(shù)組時,我將嘗試在部分中解決這個問題,就好像它們是列表一樣,因此首先失去了庫的很多目的。盡管語法更加緊湊,但它帶來了顯著的速度提升。

創(chuàng)造人口

這個很簡單。我們可以直接替換生成pop使用numpy.random.randint。我們需要為 和 指定值population_sizechromosome length使用這些值來指定輸出大小。

population_size = 6
chromosome_length = 10
pop = np.random.randint(0, 2, (population_size, chromosome_length))

注意:這不會給出與您在實際問題中包含的完全相同的值,因為我們沒有為隨機(jī)數(shù)生成器設(shè)置種子。但是,代碼直接等效于您的for循環(huán),但性能更高。

生成expected

我無法準(zhǔn)確替換本節(jié),因為替換你的循環(huán)太多了,一些變量也未定義。所以,我只是假設(shè)我將獲得與您顯示的相同的二維數(shù)組:

expected = np.array([[1.99214608],
                     [1.45140389],
                     [0.07068525],
                     [0.69507167],
                     [1.08384057],
                     [0.70685254]])

分箱數(shù)據(jù)

這有點復(fù)雜。我們可以利用numpy.digitize在您的區(qū)間(0、0.9 和 1.5)之間對數(shù)據(jù)進(jìn)行分類。但是,此方法不適用于 2D 數(shù)組,因此我將首先使用numpy.ravel()展平數(shù)組。

這將返回每個值expected所屬的 bin 標(biāo)識列表。但是,bin 標(biāo)識從 1 開始,我們希望將這些值用作數(shù)組的索引,因此我還將同時從結(jié)果中減去 1。

bins = np.array([0, 0.9, 1.5])
dig = np.digitize(expected.ravel(), bins) - 1

最后的步驟

我將創(chuàng)建一個與 bin 類別相對應(yīng)的值數(shù)組。然后我們可以使用相應(yīng)的替換值numpy.take來替換 的值。dig

replacements = np.array([0, 1, 2])
actual = np.take(replacements, dig)

最后:),我們可以使用numpy.repeatusingactual以正確的比例獲取行pop來構(gòu)建輸出。

最終代碼

import numpy as np


population_size = 6

chromosome_length = 10


pop = np.random.randint(0, 2, (population_size, chromosome_length))


# But I'm going to deliberately overwrite the above to solve your particular case

pop = np.array([[0., 1., 0., 1., 1., 1., 0., 0., 1., 1.],

                [0., 0., 1., 0., 1., 0., 1., 1., 0., 0.],

                [0., 0., 1., 0., 0., 1., 1., 0., 0., 1.],

                [0., 0., 0., 0., 1., 0., 1., 1., 1., 0.],

                [0., 0., 0., 0., 1., 0., 1., 1., 0., 1.],

                [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.]])



# Hard-coded :/

expected = np.array([[1.99214608],

                     [1.45140389],

                     [0.07068525],

                     [0.69507167],

                     [1.08384057],

                     [0.70685254]])


bins = np.array([0, 0.9, 1.5])

dig = np.digitize(expected.ravel(), bins) - 1


replacements = np.array([0, 1, 2])

actual = np.take(replacements, dig)


out = np.repeat(pop, actual, axis=0)

print(out)

給出:


[[0. 1. 0. 1. 1. 1. 0. 0. 1. 1.]

 [0. 1. 0. 1. 1. 1. 0. 0. 1. 1.]

 [0. 0. 1. 0. 1. 0. 1. 1. 0. 0.]

 [0. 0. 0. 0. 1. 0. 1. 1. 0. 1.]]


查看完整回答
反對 回復(fù) 2022-10-18
  • 1 回答
  • 0 關(guān)注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號