NumPy中的柱状增长矩阵

2024-10-02 12:27:25 发布

您现在位置:Python中文网/ 问答频道 /正文

在纯Python中,可以非常容易地逐列增长矩阵:

data = []
for i in something:
    newColumn = getColumnDataAsList(i)
    data.append(newColumn)

NumPy的数组没有append函数。hstack函数在零大小的数组上不起作用,因此以下操作将不起作用:

data = numpy.array([])
for i in something:
    newColumn = getColumnDataAsNumpyArray(i)
    data = numpy.hstack((data, newColumn)) # ValueError: arrays must have same number of dimensions

所以,我的选择是使用适当的条件移除初始化iside循环:

data = None
for i in something:
    newColumn = getColumnDataAsNumpyArray(i)
    if data is None:
        data = newColumn
    else:
        data = numpy.hstack((data, newColumn)) # works

。。。或者使用Python列表并转换为数组:

data = []
for i in something:
    newColumn = getColumnDataAsNumpyArray(i)
    data.append(newColumn)
data = numpy.array(data)

这两种变体看起来都有点尴尬。有更好的解决方案吗?


Tags: 函数innumpynonefordata矩阵数组
1条回答
网友
1楼 · 发布于 2024-10-02 12:27:25

通常在创建NumPy数组时,不会一直调整其大小。你不喜欢你的第三个解决方案吗?如果它是一个非常大的矩阵/数组,那么在开始分配其值之前,可能需要先分配该数组:

x = len(something)
y = getColumnDataAsNumpyArray.someLengthProperty

data = numpy.zeros( (x,y) )
for i in something:
   data[i] = getColumnDataAsNumpyArray(i)

相关问题 更多 >

    热门问题