簡體   English   中英

如何初始化Numpy數組的numpy數組

[英]How to initialise a Numpy array of numpy arrays

我有一個尺寸為4x4numpy 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM