将python映射对象转换为数组或数据框

时间:2018-12-25 06:56:55

标签: python-3.x

如何在python中将映射对象(从ndarray对象派生)转换为数据框或数组对象。

我有一个大小为10 * 10的正态分布数据,称为a。还有一个包含b的大小为10 * 10的0和1的数据。如果b不为零,我想向b添加a,否则返回b。

我正在做地图。我可以创建名为c的地图对象,但看不到它的内容。有人可以帮忙吗?

a=numpy.random.normal(loc=0.0,scale=0.001,size=(10,10))    
b = np.random.randint(2, size=a.shape)
c=map(lambda x,y : y+x if y!=0 else x, a,b)

a=[[.24,.03,.87],
   [.45,.67,.34],
   [.54,.32,.12]]

b=[[0,1,0],
  [1,0,0],
  [1,0,1]]

然后c如下所示。

c=[[0,1.03,.87],
  [1.45,0,0],
  [1.54,0,1.12]
  ]

3 个答案:

答案 0 :(得分:2)

np.multiply(a,b) + b

应该做

这是输出

array([[0.  , 1.03, 0.  ],
       [1.45, 0.  , 0.  ],
       [1.54, 0.  , 1.12]])

答案 1 :(得分:0)

使用map极大地阻碍了代码的运行,这很慢,即使在普通的Python中,通常也不建议使用简单的映射-但是特别是因为纯Numpy的运行速度比Python快得多,因此我不会使用它。这一切都没有提到您的代码甚至都不会编译(尝试list(c)看看会发生什么)。

请记住,在Numpy中,您基本上可以轻松地完成所有元素方面的工作。生成要处理的索引,并明确地执行以下操作:

indices = b==0
c=a+b
c[indices]=0

基本上,这里我只是对矩阵元素进行了明智的求和,然后将不需要的索引取0。 @RobS答案是一种更酷的方法。

答案 2 :(得分:0)

由于export NODE_BINARY=node FORCE_MINIFYING=true ../node_modules/react-native/scripts/react-native-xcode.sha是numpy数组,因此有一个numpy函数,特别是针对此用例,例如b (documentation)

如果a和b如下,

np.where

然后输出下一行,

a=np.array([[.24,.03,.87],
            [.45,.67,.34],
            [.54,.32,.12]])

b=np.array([[0,1,0],
            [1,0,0],
            [1,0,1]])

将是

np.where(b!=0, a+b, b)