如何初始化2D的numpy数组

8

注意:我找到了答案并回答了自己的问题,但我必须等待2天才能接受我的回答。


如何使用除零以外的其他值初始化大小为800x800的numpy数组?

array = numpy.zeros((800, 800))

我正在寻找像这样的解决方案,可以传入一个或多个值列表。
 array = numpy.array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
                        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])

编辑: 我不想用相同的值填充它。

我想要一个快速的代码示例,演示这个是如何工作的,而不需要像其他问题中那样提供冗长详细的示例。我还想要一些简单易懂的东西,就像将 Python 数组转换为 NumPy 数组一样。我也在寻找特定情况下的二维数组。


1
我不确定我理解了问题。您想要构建一个填充有“1”的数组,还是填充任何您输入的值?另外,为什么您编写了一个填充有1的30x30数组的代码? - rafaelc
我找到了我的问题的答案。我认为这很有用,因为在我查看的其他答案中,我无法找到如此简单的答案。此外,我不想填充相同的值。我想添加我的答案以帮助他人。因此,我希望它不被标记为重复。 - Rock Lee
你有阅读完整的文档吗? - wwii
@wwii 不,它非常庞大和广泛,很难在任何地方找到一个简单的例子。 - Rock Lee
http://docs.scipy.org/doc/numpy/reference/routines.array-creation.html#array-creation-routines - wwii
2个回答

11
您可以使用fill方法来初始化数组。
x = np.empty(shape=(800,800))
x.fill(1)

1

我自己找到了答案: 这段代码实现了我想要的功能,并且展示了我可以将一个Python数组("a")转换成NumPy数组。对于我的绘制到窗口的代码,它是倒着绘制的,所以我添加了最后一行代码。

# generate grid
    a = [ ]
    allZeroes = []
    allOnes = []

    for i in range(0,800):
        allZeroes.append(0)
        allOnes.append(1)

    # append 400 rows of 800 zeroes per row.
    for i in range(0, 400):
        a.append(allZeroes)

    # append 400 rows of 800 ones per row.
    for i in range(0,400):
        a.append(allOnes)


#So this is a 2D 800 x 800 array of zeros on the top half, ones on the bottom half.
array = numpy.array(a)

# Need to flip the array so my other code that draws 
# this array will draw it right-side up
array = numpy.flipud(array)

最好不要这样做,如果您想在之后修改数组,因为您每次都是将相同的实例 allZeroes 和 allOnes 追加了 400 次。如果您在之后修改数组,每次修改似乎会发生 400 次。实际上,你所做的是无用的。 - ReubenBeeler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接