Python numpy数组转换

时间:2017-05-01 15:35:12

标签: python arrays numpy neural-network

我在python中有两个数组,一个包含1' s另一个浮点值,我连接它们并得到以下数组:

[[0.122700 0.242400 0.000200 0.247300 0.758100 0.212200 1.000000]

 [0.276400 0.359800 0.005500 0.525200 0.787100 0.272700 1.000000]]

我希望它看起来像这样:

[[0.122700, 0.242400, 0.000200, 0.247300, 0.758100, 0.212200], [1.000000]],

[[0.276400, 0.359800, 0.005500, 0.525200, 0.787100, 0.272700], [1.000000]]

因为那个输入集在我想要使用的NN中是怎样的,NN的代码片段是:

def demo():
# Teach network XOR function
testinput = [
    [[0,0], [0]],
    [[0,1], [1]],
    [[1,0], [1]],
    [[1,1], [0]]
]`

我怎样才能做到这一点?这是数组的代码:

array12 = np.ones((17,1))
array1t = np.hstack((array11color,array11diameter,array11compactness, array11asymmetry,array11solidity,array11extent))
np.set_printoptions(formatter={'float_kind':'{:f}'.format})
array2t = np.concatenate((array1t, array12), axis=1)
print(array2t)

2 个答案:

答案 0 :(得分:2)

如果你有浮点数组和一组数组,你想按照你想要的方式添加它们,你可以创建一个新的轴到一个数组并将它们压缩在一起并创建一个新的数组,如下所示

a = np.random.rand(2,6) # floats arrays
print a

'''
[[ 0.8481245   0.79061519  0.12447346  0.82435141  0.27577374  0.94882922]
 [ 0.1927391   0.0198176   0.2061685   0.33492186  0.29266001  0.80629359]]
'''

b = np.ones(2) # one arrays
print b

'''
[ 1.  1.]
'''

print b.shape
'''
(2,)
'''

b= b[:,None] # create a new axis for b
print b.shape # check the shape of the new b
'''
(2, 1)
'''

c = np.array(zip(a,b)) # zip a and b and make a new array
print c

'''
[[ array([ 0.8481245 ,  0.79061519,  0.12447346,  0.82435141,  0.27577374,
        0.94882922])
  array([ 1.])]
 [ array([ 0.1927391 ,  0.0198176 ,  0.2061685 ,  0.33492186,  0.29266001,
        0.80629359])
  array([ 1.])]]
'''

答案 1 :(得分:1)

问题是你想用它做什么?是的,你可以拥有那种类型的结构,但它们将是numpy内的Python列表(dtype =' O')。你将失去你在numpy操作中寻找的所有速度,因为它需要在采取行动之前先去解释器并评估每件事。这是numpy数组看起来像numpy的样子。

[[0.122700 0.242400 0.000200 0.247300 0.758100 0.212200],
 [1.000000]
 [0.276400 0.359800 0.005500 0.525200 0.787100 0.272700],
 [1.000000]]

像转置这样的操作会是什么样的?或涉及对角线的操作?

通常做的是将这些数据数组分开:

X = np.array([[0.122700 0.242400 0.000200 0.247300 0.758100 0.212200],[0.276400 0.359800 0.005500 0.525200 0.787100 0.272700]])

Y = np.ones([2,1], dtype=np.float64)

然后你可以做所有的标准矩阵乘法。我担心的是,当你得到你所要求的东西时,你就不会想要它。

这是一个good example to follow,用于教授关于XOR的一般线性模型(在页面底部)