热线电话:13121318867

登录
2019-03-07 阅读量: 810
为什么在列表中打印数组([])

想看看我是否可以使用理解或数组运算符,而不是for循环。

import numpy as np

a=[[1,2],[3,4]]

b=np.array(a)

c=[[x*z for x in z] for z in b[0:1]]

print(c)

OUTPUT = [[array([1,2]),array([2,4])]]

我想要一个列表或数组= [2,12]

之后我可以将列表转换为1D数组。它是数组中每行的第一个元素*第二个元素。

我想让它适用于任何二维数组的一般情况。

解决办法:看看行动 - 一步一步:

In [170]: b.shape

Out[170]: (2, 2)

In [171]: b[0:1]

Out[171]: array([[1, 2]]) # (1,2) array

In [172]: [z for z in b[0:1]]

Out[172]: [array([1, 2])] # iteration on 1st, size 1 dimension

In [173]: [[x for x in z] for z in b[0:1]]

Out[173]: [[1, 2]]

In [174]: [[x*z for x in z] for z in b[0:1]]

Out[174]: [[array([1, 2]), array([2, 4])]]

所以你在做 [1*np.array([1,2]), 2*np.array([1,2])]

通过b[0:1]切片你甚至没有碰到第二排b。

但是更简单的列表理解呢:

In [175]: [i*j for i,j in b] # this iterates on the rows of b

Out[175]: [2, 12]

要么

In [176]: b[:,0]*b[:,1]

Out[176]: array([ 2, 12])

10.7653
3
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子