[英]How to initialise a Numpy array of numpy arrays
我有一個尺寸為4x4
的numpy array D
我想要一個基於用戶定義值v
的新numpy數組
如果v=2
,則新的numpy數組應為[DD]
。 如果v=3
,則新的numpy數組應為[DDD]
我如何將這樣的numpy數組初始化為numpy.zeros(v)
不允許我將數組作為元素放置?
如果我理解正確,您想獲取一個2D數組並將其在第一個維度上平鋪v
次嗎? 您可以使用np.repeat
:
# a 2D array
D = np.arange(4).reshape(2, 2)
print D
# [[0 1]
# [2 3]]
# tile it 3 times in the first dimension
x = np.repeat(D[None, :], 3, axis=0)
print x.shape
# (3, 2, 2)
print x
# [[[0 1]
# [2 3]]
# [[0 1]
# [2 3]]
# [[0 1]
# [2 3]]]
如果希望輸出保持二維,即(6, 2)
6,2 (6, 2)
,則可以省略[None, :]
索引(有關numpy廣播規則的更多信息,請參見此頁 )。
print np.repeat(D, 3, axis=0)
# [[0 1]
# [0 1]
# [0 1]
# [2 3]
# [2 3]
# [2 3]]
另一個選擇是np.tile
,其行為略有不同,因為它將始終平鋪在最后一個維度上:
print np.tile(D, 3)
# [[0, 1, 0, 1, 0, 1],
# [2, 3, 2, 3, 2, 3]])
您可以按照以下步驟進行操作:
import numpy as np
v = 3
x = np.array([np.zeros((4,4)) for _ in range(v)])
>>> print x
[[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]]
在這里,看看是否適合您。
import numpy as np
v = raw_input('Enter: ')
從用戶輸入初始化數組的numpy數組(顯然可以是您想要的任何形狀):
b = np.zeros(shape=(int(v),int(v)))
我知道這不是在初始化一個numpy數組,但是由於您提到例如要在v為2的情況下想要[DD]數組,所以以為我也將其作為另一個選擇。
new_array = []
for x in range(0, int(v)):
new_array.append(D)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.