我有一个维度的numpy array D 4x4
我想要一个基于用户定义的值v的新的numpy数组
如果是v=2,那么新的numpy数组应该是[D D]。如果是v=3,那么新的numpy数组应该是[D D D]
如何初始化像numpy.zeros(v)这样的numpy数组,不允许我将数组作为元素来放置?
发布于 2014-05-11 01:31:52
如果我正确理解,您想要一个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) ),则可以省略[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]])发布于 2014-05-11 01:24:54
你可以这样做:
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.]]]发布于 2014-05-11 01:31:43
给你,看看这对你有用吗。
import numpy as np
v = raw_input('Enter: ')要从用户输入中减少数组的numpy数组(显然可以是您在这里想要的任何形状):
b = np.zeros(shape=(int(v),int(v)))我知道这并不是初始化一个numpy数组,但是既然您提到如果v是2,需要一个D数组,那么我就想把它作为另一个选项。
new_array = []
for x in range(0, int(v)):
new_array.append(D)https://stackoverflow.com/questions/23587841
复制相似问题