Python 3.x 将python映射对象转换为数组或数据帧
在python中,如何将映射对象(从ndarray对象派生)转换为数据帧或数组对象 我有一个大小为10*10的正态分布数据,叫做a。还有一个数据包含大小为10*10的0和1,称为b。如果b不是零,我想把a加到b上,否则返回b 我是通过地图做的。我能够创建名为c的map对象,但看不到它的内容。有人能帮忙吗Python 3.x 将python映射对象转换为数组或数据帧,python-3.x,Python 3.x,在python中,如何将映射对象(从ndarray对象派生)转换为数据帧或数组对象 我有一个大小为10*10的正态分布数据,叫做a。还有一个数据包含大小为10*10的0和1,称为b。如果b不是零,我想把a加到b上,否则返回b 我是通过地图做的。我能够创建名为c的map对象,但看不到它的内容。有人能帮忙吗 a=numpy.random.normal(loc=0.0,scale=0.001,size=(10,10)) b = np.random.randint(2, size=a.shape
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]
]
应该这样做
这是输出
array([[0. , 1.03, 0. ],
[1.45, 0. , 0. ],
[1.54, 0. , 1.12]])
应该这样做
这是输出
array([[0. , 1.03, 0. ],
[1.45, 0. , 0. ],
[1.54, 0. , 1.12]])
由于,
a
和b
都是numpy数组,因此有一个numpy函数专门用于此用例,如np.where
如果a和b如下所示
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)
会是,
[[0. 1.03 0. ]
[1.45 0. 0. ]
[1.54 0. 1.12]]
由于,
a
和b
都是numpy数组,因此有一个numpy函数专门用于此用例,如np.where
如果a和b如下所示
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)
会是,
[[0. 1.03 0. ]
[1.45 0. 0. ]
[1.54 0. 1.12]]
回答得好。注意:您可以使用
a*b+b
来生成更漂亮的线条,或者(a+1)*b
。*
操作符被正确地重载到工作元素方面,就像+
一样。谢谢!不幸的是,两者都不起作用,因为a和b是列表,而不是ndarraysOP明确显示它们的输入是一个Numpy数组,我认为可以安全地假设它们是。回答得好。注意:您可以使用a*b+b
来生成更漂亮的线条,或者(a+1)*b
。*
操作符被正确地重载到工作元素方面,就像+
一样。谢谢!不幸的是,两者都不起作用,因为a和b是列表,而不是ndarraysOP明确显示它们的输入是一个Numpy数组,我认为可以安全地假设它们是。为什么c的第一行有0.87?为什么c的第一行有0.87?非常感谢Pranav。非常感谢Pranav。