首页 > 解决方案 > 似乎无法在 Python 中交换记录数组中的行

问题描述

似乎无法交换表中的两行。如您所见,位置一成功复制到位置 0,但反之则不然?每个位置的数据都在交换之前存储,所以它不像计算机正在获取新的覆盖数据并将其放入新位置。

代码:

```
import numpy as np

name = ['Alice1', 'Bob', 'Cathy', 'Doug']
age = [25, 45, 100, 19]
weight = [55.0, 85.5, 68.0, 61.5]

data = np.zeros(4, dtype={'names': ('name', 'age', 'weight'), 'formats': ('U10', 'i4', 'f8')})

data['name'] = name
data['age'] = age
data['weight'] = weight

pos0 = data[0]
pos1 = data[1]

data[0] = pos1
data[1] = pos0

print(data)
```

输出:

```
ORIGIONAL LIST: [('Alice1',  25, 55. ) ('Bob',  45, 85.5) ('Cathy', 100, 68. )
('Doug',  19, 61.5)]
NEW SWAPPED LIST: [('Bob',  45, 85.5) ('Bob',  45, 85.5) ('Cathy', 100, 68. )
('Doug',  19, 61.5)]
```

标签: pythonarraysnumpy

解决方案


你可以使用numpy.copy

data[0], data[1] = data[1], data[0].copy()

推荐阅读