2016-07-30 343 views
2

我有一个返回列表的函数。我想我使用np.append将这个列表添加为数组中的新行,我的意图如下:可视化numpy数组/矩阵

list = 4 5 6 

b = 1 2 3 
b = np.append(b, list) 

输出;

1 2 3 
4 5 6 

这不是我使用的代码(在它们之间有很多混乱)。但输出I得到的是:

2016-06-01 PRINT [ 99.86   99.928  99.9   99.875  99.8   89.7933 
    97.60018333 98.903  99.928   0.2801201 98.95   98.93 
    98.87   98.94   99.05   89.097  97.6712  98.87 
    99.59   0.23538903 99.711  99.732  99.725  99.724 
    99.769  89.777  98.12053333 99.68   99.88 
    0.30333219 99.805  99.79   99.743  99.71   99.69 
    89.7728  98.06653333 99.617  99.82   0.28981292 
    99.882  99.879  99.865  99.84   99.9   89.9206 
    98.29823333 99.82  100.08   0.31420778] 

这是由5行阵列/矩阵10的列或这是一个50列/行数组?我觉得我在这里错过了一些东西 - 或者只是输出结果没有真正显示阵列的形状?

+0

w ^我没有从numpy得到数组的形状,例如。 'b.shape' Ref:[numpy.ndarray。形状](http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.shape.html) – davedwards

+0

我只看到一组'''' - 所以它是1d,一个1d 50元素数组。像你的短小的6元素阵列。 – hpaulj

回答

3

真正的名单追加:

In [701]: alist = [4,5,6] 
In [702]: b=[1,2,3] 
In [703]: b.append(alist) 
In [704]: b 
Out[704]: [1, 2, 3, [4, 5, 6]] 

坏数组操作:

In [705]: anArray=np.array([4,5,6]) 
In [706]: b=np.array([1,2,3]) 
In [707]: b=np.append(b,anArray) 
In [708]: b 
Out[708]: array([1, 2, 3, 4, 5, 6]) 
In [709]: b.shape 
Out[709]: (6,) 

在这里,我只是串联anArrayb,使得较长的阵列。

我以前说过这个 - np.append不是一个好的功能。它看起来很像名单append,人们最终滥用它。要么他们错过了它返回一个新数组的事实,而不是就地修改。或者他们反复使用它。

这里的收集列表或数组和连接它们的优选方式为一个

In [710]: alist = [] 
In [711]: b=np.array([1,2,3]) # could be b=[1,2,3] 
In [712]: alist.append(b) 
In [713]: b=np.array([4,5,6]) # b=[4,5,6] 
In [714]: alist.append(b) 
In [715]: alist 
Out[715]: [array([1, 2, 3]), array([4, 5, 6])] 
In [716]: np.array(alist) 
Out[716]: 
array([[1, 2, 3], 
     [4, 5, 6]]) 
In [717]: _.shape 
Out[717]: (2, 3) 

结果是一个二维数组。列表附加比数组append(这是实数数组连接)快得多。建立列表然后创建数组。

限定的2D阵列的最常见的方法是用一个列表的列表:

In [718]: np.array([[1,2,3],[4,5,6]]) 
Out[718]: 
array([[1, 2, 3], 
     [4, 5, 6]]) 

np.concatenate是用于接合数组和列表的另一种选择。如果对他们的加入方式有更多的控制,但你必须注意输入的维度(你应该注意那些)。

有几个简化尺寸处理的“栈”功能,stack, hstack, vstack和是,append。值得看看他们的代码。

+0

我想你说'np.array'在你指的是'np.append'的地方。 – user2357112

+0

你说得对。纠正。 – hpaulj

1

你应该使用hstack或vstack

import numpy as np 
a = np.array([1, 2, 3]) 
b = np.array([4, 5, 6]) 
np.vstack((a,b)) 

array([[1, 2, 3], 
     [4, 5, 6]]) 

np.hstack((a,b)) 

array([1, 2, 3, 4, 5, 6])