Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将python映射对象转换为数组或数据帧_Python 3.x - Fatal编程技术网

Python 3.x 将python映射对象转换为数组或数据帧

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

在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)
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。