1、数据源为数组ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会。
#!/usr/bin/env python
import numpy as np
data = np.array([100, 200, 300])
a = np.array(data)
b = np.asarray(data)
print("数据源改变之前:")
print(a)
print(b)
data[2] = 888
print("数据源改变之后:")
print(a)
print(b)
数据源改变之前:
[100 200 300]
[100 200 300]
数据源改变之后:
[100 200 300]
[100 200 888]
2、数据源为列表时,两者没区别。
#!/usr/bin/env python
import numpy as np
data = [100, 200, 300]
a = np.array(data)
b = np.asarray(data)
print("数据源改变之前:")
print(a)
print(b)
data[2] = 888
print("数据源改变之后:")
print(a)
print(b)
数据源改变之前:
[100 200 300]
[100 200 300]
数据源改变之后:
[100 200 300]
[100 200 300]
本文探讨了在Python的numpy库中,array与asarray函数处理不同数据源时的行为差异。当数据源为ndarray时,array会创建数据副本,而asarray则直接引用原始数据,导致数据源修改会影响asarray的结果;当数据源为列表时,两者行为一致,不会受到数据源修改的影响。
699

被折叠的 条评论
为什么被折叠?



