asarray和array区别
时间: 2024-06-09 10:06:44 浏览: 66
对numpy中array和asarray的区别详解
array和asarray都可以将结构数据转化为ndarray,但是主要区别在于当数据源是ndarray时,array会创建一个新的ndarray副本,而asarray不会。换句话说,array会占用新的内存空间,而asarray则会与原始数据共享同一块内存。
举例来说明:
1. 当参数是一般数组时:
```python
a = [1, 1] # a是一般数组
b = np.array(a) # array会创建一个新的ndarray对象
c = np.asarray(a) # asarray不会创建新的对象,与a共享内存
a[1] = 2
print('a=', a)
print('b=', b) # a的变化不会影响到b和c
print('c=', c)
输出:
a= [1, 2]
b= [1 1]
c= [1 1]
```
2. 当参数是ndarray对象时:
```python
a = np.ones(2, dtype='i') # a本身就是ndarray对象
b = np.array(a) # array会复制一个ndarray对象给b
c = np.asarray(a) # asarray不会复制,与a共享内存
a[1] = 2
print('a=', a)
print('b=', b) # a的变化不会影响到b
print('c=', c) # a与c是同一个内存,即同一个对象
输出:
a= [1 2]
b= [1 1]
c= [1 2]
```
阅读全文