為了輕松計算點積,我正在撰寫一個函式來附加一個帶有值的列1(在 處連接axis = 1),這就是我所做的:
def function(a):
a = np.concatenate((a, np.ones(a.shape[0]), 1), axis=1)
return a
train = function(train)
test = function(test)
當我運行時,我收到此錯誤:
ValueError:所有輸入陣列必須具有相同的維數,但索引 0 處的陣列有 3 維,索引 1 處的陣列有 1 維
我明白這是什么意思,但我不知道如何解決這個問題,有人可以幫助我嗎?謝謝你的幫助!
uj5u.com熱心網友回復:
您可以使用臨時變數來使用 Python 串列操作執行任務,例如append():
import numpy as np
def function(a):
b = a.tolist()
for i in range(len(b)):
b[i].append(1)
return np.array(b)
train = function(np.array([[0]*4096]*2400))
print(train.shape, train)
輸出:
(2400, 4097)
[[0 0 0 ... 0 0 1]
[0 0 0 ... 0 0 1]
[0 0 0 ... 0 0 1]
...
[0 0 0 ... 0 0 1]
[0 0 0 ... 0 0 1]
[0 0 0 ... 0 0 1]]
uj5u.com熱心網友回復:
看看你給出的清單concatenate:
(a, np.ones(a.shape[0]), 1)
您沒有顯示您的a(train或test),但根據錯誤,它有 3 個維度 - 你明白嗎。
np.ones(a.shape[0])制作一維陣列。你明白為什么嗎?
1轉換為陣列時np.array(1)為 0d 陣列。
這 3 個項應該具有相同的維數,而不是 3、1 和 0!還要求尺寸匹配(連接軸除外)。
結果的預期形狀是什么?如果不知道您的意圖,我們將無能為力。或者你為什么使用這個結構。
編輯
連接引數中最后一個 1 的目的是什么?
您是否輸入了錯誤的函式,而是打算創建一個 (n,1) 陣列?
np.concatenate((a, np.ones((a.shape[0], 1)), axis=1)
如果a是 2d,這將起作用,因為ones也將是 2d。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/494410.html
