首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何初始化Numpy数组的numpy数组

如何初始化Numpy数组的numpy数组
EN

Stack Overflow用户
提问于 2014-05-11 00:56:48
回答 3查看 165关注 0票数 0

我有一个维度的numpy array D 4x4

我想要一个基于用户定义的值v的新的numpy数组

如果是v=2,那么新的numpy数组应该是[D D]。如果是v=3,那么新的numpy数组应该是[D D D]

如何初始化像numpy.zeros(v)这样的numpy数组,不允许我将数组作为元素来放置?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-11 01:31:52

如果我正确理解,您想要一个2D数组并在第一个维度中将它平铺v次吗?您可以使用np.repeat

代码语言:javascript
运行
复制
# 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广播规则的更多信息,请参见此页 )。

代码语言:javascript
运行
复制
print np.repeat(D, 3, axis=0)
# [[0 1]
#  [0 1]
#  [0 1]
#  [2 3]
#  [2 3]
#  [2 3]]

另一种选择是np.tile,它的行为略有不同,因为它总是在最后一个维度上平铺:

代码语言:javascript
运行
复制
print np.tile(D, 3)
# [[0, 1, 0, 1, 0, 1],
#  [2, 3, 2, 3, 2, 3]])
票数 4
EN

Stack Overflow用户

发布于 2014-05-11 01:24:54

你可以这样做:

代码语言:javascript
运行
复制
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.]]]
票数 0
EN

Stack Overflow用户

发布于 2014-05-11 01:31:43

给你,看看这对你有用吗。

代码语言:javascript
运行
复制
import numpy as np
v = raw_input('Enter: ')

要从用户输入中减少数组的numpy数组(显然可以是您在这里想要的任何形状):

代码语言:javascript
运行
复制
b = np.zeros(shape=(int(v),int(v)))

我知道这并不是初始化一个numpy数组,但是既然您提到如果v是2,需要一个D数组,那么我就想把它作为另一个选项。

代码语言:javascript
运行
复制
new_array = []
for x in range(0, int(v)):
    new_array.append(D)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23587841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档