在numpy中如何建立乙個空的陣列或矩陣

2021-09-18 08:24:28 字數 1538 閱讀 4570

如何以我通常使用列表(list)的方式使用numpy陣列或矩陣? 我想建立乙個空的陣列(或矩陣),然後每次新增一列(或行)到這個陣列(或矩陣)。

目前能想到的方法是:

mat = none

for col in columns:

if mat is none:

mat = col

else:

mat = hstack((mat, col))

而如果它是乙個列表,我會這樣做:

有沒有辦法在numpy中這樣使用陣列或矩陣?

最佳解決方案

上面對numpy的使用觀念可能有誤。 numpy陣列儲存在連續的記憶體塊中,如果要將行或列新增到現有陣列中,則需要將整個陣列複製到乙個新的記憶體塊,從而為要儲存的新元素建立間隙。如果重複建立乙個陣列,這是非常低效的。

在新增行的情況下,最好的辦法是建立乙個與您的資料集最終大小一樣的陣列,然後向其中按行新增資料:

import numpy

a = numpy.zeros(shape=(5,2))

aarray([[ 0., 0.],

[ 0., 0.],

[ 0., 0.],

[ 0., 0.],

[ 0., 0.]])

a[0] = [1,2]

a[1] = [2,3]

aarray([[ 1., 2.],

[ 2., 3.],

[ 0., 0.],

[ 0., 0.],

[ 0., 0.]])

次佳解決方案

例如item可以是乙個列表,乙個陣列或任何可迭代的結構,只要每個item具有相同數量的元素。在這個特定的情況下(data是一些迭代持有矩陣列),你可以簡單地使用

mat = numpy.array(data)

(還要注意,使用list作為變數名可能不是乙個好的做法,因為它掩蓋了內建型別的名稱,這可能會導致錯誤。)

如果由於某種原因,你真的想建立乙個空的陣列,你可以使用 numpy.array(),但這是很少有用的!

第三種解決方案

在numpy中建立乙個空的多維陣列(例如乙個二維陣列m*n來儲存你的矩陣),如果你不知道(m)你會追加多少行,而不關心計算成本(即在每次附加元素時re-buildinging陣列),您可以設定0為要新增到的維度:x = np.empty(shape=[0, n])。

這樣你可以使用例如(這裡我們假設我們不知道什麼時候建立空矩陣m = 5和n = 2):

import numpy as np

n = 2

x = np.empty(shape=[0, n])

print x

這會給你:

[[ 0. 0.]

[ 0. 1.]

[ 1. 0.]

[ 1. 1.]

[ 2. 0.]

[ 2. 1.]

[ 3. 0.]

[ 3. 1.]

[ 4. 0.]

[ 4. 1.]]

如何在NumPy中建立空陣列 矩陣?

在新增行的情況下,你最好的選擇是建立乙個與資料集最終一樣大的陣列,然後向它新增資料 row by row 複製 import numpy a numpy zeros shape 5 2 aarray 0.0.0.0.0.0.0.0.0.0.a 0 1,2 a 1 2,3 aarray 1.2.2.3...

C 在MVC中如何建立乙個執行緒

這個其實是很簡單的,但是網上的例子大多是控制台應用程式中實現的。在mvc中的都沒看到過,如果沒用過。會遇到一些問題。首先是乙個要呼叫的方法 public class rabbitmqinstance global.asax 中的實現 th.start 第二種實現 thread th1 new thr...

在shell中如何判斷乙個變數是否為空

在shell中如何判斷乙個變數是否為空 判斷乙個指令碼中的變數是否為空,我寫了乙個這樣的shell指令碼 bin sh filename test.sh para1 if n para1 then echo is null else echo not null fi 然後把該指令碼 test.sh通...