1

我试图对列表和 numpy 数组进行一些简单的操作,但遇到了一些简单的事情:

a=np.arange(12)
a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
a=np.reshape(a,(3,4))
a
array([[ 0,  1,  2,  3],
   [ 4,  5,  6,  7],
   [ 8,  9, 10, 11]])

b=np.arange(12,24)
b
array([12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])
b=np.reshape(3,4)
list1 = [(a,'a'),(b,'b')]
data = [(i, j) for i,j in list1]

当我尝试这样做时:

data[0][0]=np.delete(data[0][0], np.s_[-1::],0)

我收到以下错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

但如果我这样做:

cop=np.delete(data[0][0], np.s_[-1::],0)
cop
array([[0, 1, 2, 3],
   [4, 5, 6, 7]])

它工作得很好。

但我也做不到:

data[0][0]=np.copy(cop)

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

但如果我检查类型,两者实际上都是数组:

type(cop)
<type 'numpy.ndarray'>

type(data[0][0])
<type 'numpy.ndarray'>

好几个小时我都找不到错误。

4

1 回答 1

1

然后我意识到数据实际上是一个元组。

所以这就是解决问题的方法:

data = [[i, j] for i,j in list1]

然后我可以替换像 data[0][0] 这样的元素

于 2013-01-24T14:28:30.907 回答