有两个数组:a=np.array([1,2,3,4,5])
和b=np.array([1,2,3,4,5,6,7,8,9])
创建一个包含其他两个数组的新数组:c=np.array([[a],[b]])
。
我们希望在c
中以最小值(例如值3)为两个数组中的每一个进行阈值处理,并在最后得到:d=[[4,5],[4,5,6,7,8,9]]
。
按照这种方式:
d=[]
p=-1
for i in range(0,1):
p=p+1
d[p]=c[i][(c[i]>3)]]
给出标题错误中提到的内容。 理解原因会很高兴。
答案 0 :(得分:2)
问题是您在[]
中添加了额外级别的c
,因此您应该访问c[i]
而不是仅访问c[i][0]
:
>>> for x in c:
... print x
...
[array([1, 2, 3, 4, 5])]
[array([1, 2, 3, 4, 5, 6, 7, 8, 9])]
用c[i]
替换c[i][0]
将修复您的代码,并且您也无法将任何内容分配给空列表,因此请使用追加调用替换d[p]
:
>>> d = []
>>> for i in range(len(c)):
d.append(c[i][0][c[i][0]>3])
...
>>> d
[array([4, 5]), array([4, 5, 6, 7, 8, 9])]
#or simply:
>>> [x[0][x[0]>3] for x in c]
[array([4, 5]), array([4, 5, 6, 7, 8, 9])]
更改c
的初始化:
>>> c = np.array([a, b])
>>> [x[x>3] for x in c]
[array([4, 5]), array([4, 5, 6, 7, 8, 9])]