值错误:无法将输入数组从形状(10,1)广播到形状(10)

2024-10-04 05:25:35 发布

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

我对一些简单的事情有意见。我试图用for循环中的数据填充一个0矩阵,但我一直收到错误:“ValueError:无法将输入数组从形状(10,1)广播到形状(10)”

我的代码如下:

import numpy as np
import random

def hire(n = 10, nRuns = 2):

    data = np.array(np.zeros((n,nRuns)))
    i = 0

    while i < nRuns:
        cand = [[w] for w in range(1,n+1)] 
        random.shuffle(cand) 

        look = np.zeros((n,1))
        track = np.zeros((n,1))

        for M in range(0,n-1):
            look[M] = cand[M]
            lookbest = max(look)
            left = cand[M:]

            for q in range(0, n-M-1):
                if left[q] > lookbest:
                    track[M] = left[i]
                    break
                else:
                    pass

        data[:,i] = track #the error occurs right here

        i = i + 1

为什么是data[n,nRuns].shape=(10,)而不是(10,1)?我该怎么做呢?在


Tags: inimportfordatanpzerosrangerandom
1条回答
网友
1楼 · 发布于 2024-10-04 05:25:35

data[:,i]创建数据数组的秩1切片,例如,这就是它的形状是(10,)而不是(10,1)的原因。额外的维度是长度1,这是无关的。你应该将音轨分配到1级:

track = np.zeros(n)

您可以重塑data[:,i]以给它额外的维度,但这是不必要的;您只使用了第一个维度track和{},所以只需将它们设为1-D而不是2-D

(必须为数组声明二维的风格非常类似于Matlab;我一直讨厌Matlab的默认值是创建2D数组,但在numpy中,默认值是1D,更简单、更直观)

相关问题 更多 >