我需要构建两个数组,这样每个元素都是一个365元素的数组(以30/31元素的单个数组分隔),表示一个日历;第一个数组应该包含一天内发生的飞机航班数,第二个数组应该包含每天延误的航班数;两个数组中的每一行都应该包含一个特定旅行社的此类数据
我使用以下代码声明数组:
year = np.array([[0]*31,[0]*29,[0]*31,[0]*30,[0]*31,[0]*30,[0]*31,[0]*31,[0]*30,[0]*31,[0]*30,[0]*31,])
flights_1998_Carriers = np.array([year,]*14)
delays_1998_Carriers = np.array([year,]*14)
但是每当我为两个数组中的一个特定代理增加一个特定日期的值时,两个数组中的每个代理的同一天也会增加。例如:
print(flights_1998_Carriers[0][0][1])
print(delays_1998_Carriers[0][0][1])
flights_1998_Carriers[0][0][1] = flights_1998_Carriers[0][0][1] + 1
print(flights_1998_Carriers[0][0][1])
print(flights_1998_Carriers[1][0][1])
print(delays_1998_Carriers[0][0][1])
将打印结果:
0
0
1
1
1
我已经尝试了所有我能想到的方法,但我不明白为什么两个数组中的所有行都以这种方式链接。有人知道我把事情搞砸了吗?谢谢
同时打印
year
。您将看到它是一个列表的对象数据类型数组由于
[year,]*14
结构,flights_1998_Carriers[:,0]
中的所有元素引用相同的列表,也就是year[0]
。如果修改year[0]
的元素,也会看到flights...
中的更改。以及delays...
像
year
这样的对象数据类型数组本质上是一个列表列表,或者列表引用列表(存储在内存中的其他位置)。当你用list multiply语法创建一个新数组时,你会得到与list相同的重复问题将此数组与
year
分离,但仍然复制引用14x。你需要copy
14次像这样处理对象数组与普通列表相比没有什么优势。操作甚至可能更慢。它们当然不像数字numpy数组那样快
相关问题 更多 >
编程相关推荐