numpy矩阵无法正常工作

时间:2018-08-28 07:31:08

标签: python-3.x numpy

这是我的代码:

import random
import numpy as np
import math

populacao = 5
x_min = -10
x_max = 10
nbin = 4

def fitness(xy, populacao, resultado):

    fit = np.matrix(resultado)

    xy_fit = np.append(xy, fit.T, axis = 1)

    xy_fit_sorted = xy_fit[np.argsort(xy_fit[:,-1].T),:]
    return xy_fit_sorted


def codifica(x, x_min, x_max,n):
    x = float(x)
    xdec = round((x-x_min)/(x_max-x_min)*(2**n-1))
    xbin = int(bin(xdec)[2:])
    return(xbin)


xy = np.array([[1, 2],[3,4],[0,0],[-5,-1],[9,-2]])
resultado = np.array([5, 25, 0, 26, 85])

print(xy)
xy_fit_sorted = np.array(fitness(xy, populacao, resultado))
print(xy_fit_sorted)

parents = (xy_fit_sorted[:,:2])

print(parents)

我遇到的问题是选择两行“ xy_fit_sorted”,我正在做这个奇怪的事情:

  

父母=(xy_fit_sorted [:,:2])

了解我认为有意义的内容:

  

父母=(xy_fit_sorted [:1,:])

就像整个矩阵在一行中一样。

1 个答案:

答案 0 :(得分:0)

我不确定您的大多数代码在做什么,所以这只是一个猜测:xy_fit_sorted(1, 5, 3)的形状,还有一个额外的零轴吗?

这可能是固定的,例如通过不使用xy_fit来构造np.matrix

xy_fit = np.append(xy, resultado[:, np.newaxis], axis=1)

然后xy_fit_sorted的形状为(5, 3)

潜在的问题是np.matrix始终是二维数组。在索引xy_fit[...]时,您打算使用向量进行索引。但是将np.matrix用于xy_fit,xy_fit[:,-1].T既不是矢量,也是二维数组(形状为(1,5))。这也导致xy_fit_sorted也具有额外的维度。

请注意,numpy文档无论如何都会说出np.matrix:

  

甚至对于线性代数,也不再建议使用此类。而是使用常规数组。该类将来可能会被删除。