我有一個大小為 (16,) 的陣列。我如何正確地向它添加一個序列以在 for 回圈內獲得一個大小為 (16,3) 的陣列。重要提示:陣列“值”中的元素數量可以改變。
import numpy as np
num_test = 16
pred = np.zeros(num_test, np.bool)
items = 3
values = np.repeat(True, 3)
print(values)
for i in range(num_test):
# How to correctly solve this problem inside the loop?
pred[i] = values
# For this particular case, the output should be an array of size (16,3)
print(pred)
uj5u.com熱心網友回復:
您不能轉換(16,)為(16,3)使用pred[i] = values.
你必須創建陣列(16,3)您嘗試使用之前pred[i] = values。
pred = np.zeros((num_test, items), np.bool)
import numpy as np
num_test = 16
items = 3
pred = np.zeros((num_test, items), np.bool) # `(16, 3)`
values = np.repeat(True, items)
#pred[:] = values
for i in range(num_test):
pred[i] = values
print(pred.shape)
print(pred)
最終,您可以先創建 3 個陣列,(16,)然后再創建stack它們
import numpy as np
num_test = 16
items = 3
pred1 = np.zeros(num_test, np.bool)
pred2 = np.zeros(num_test, np.bool)
pred3 = np.zeros(num_test, np.bool)
values = np.repeat(True, items)
#pred1[:] = values[0]
#pred2[:] = values[1]
#pred3[:] = values[2]
for i in range(num_test):
pred1[i] = values[0]
pred2[i] = values[1]
pred3[i] = values[2]
pred = np.stack([pred1, pred2, pred3], axis=1)
print(pred.shape)
print(pred)
但它需要使用for-loop 來創建串列pred1, pred2,等等。
或者可能首先創建普通串列,然后將其轉換為 np.array
import numpy as np
num_test = 16
items = 3
values = np.repeat(True, items)
all_values = []
for _ in range(num_test):
all_values.append(values)
#all_values = [values for _ in range(num_test)]
pred = np.array(all_values, np.bool)
print(pred.shape)
print(pred)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/355122.html
