如何在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]
]
答案 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.sh
和a
是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)