Numpy对象是元素具有相同类型(通常为数字)并以整数元组作为索引的一维或多维数组。数组的索引整数元组包含的整数个数被称为数组的阶。
ndarrray
Numpy数组的类型被称为ndarray。注意,Numpy数组并不等同于标准的Python数组。
-
.ndim
:数组的阶 -
.shape
:数组的形状,将返回一个整数元组,整数元组第n(n<阶数)个数表示第n维的长度 -
.size
:数组包含的所有元素的个数 -
.dtype
:数组元素的类型 -
.itemsize
:数组每个元素所占字节数,例如int32为4个字节,float64为8个字节 -
.data
:数组在内存中储存的地址。
import numpy as np
a = np.arange(15).reshape(3, 5)
print a
print(a.shape)
print(a.ndim)
print(a.dtype.name)
print(a.size)
print(type(a))
b = np.array([6, 7, 8])
print(b)
print(type(b))
Numpy数组的复制
-
数组引用
引用数组并不会创建一个新的数组,新数组和源数组其实是一个对象。 -
数组浅复制
浅复制会创建一个新的数组对象,新的数组对象有独立的形状等属性,但和源数组共享数据。浅复制数组用view()
函数。
import numpy as np
a = np.arange(12).reshape(3, 4)
c = a.view()
print(c is a) # False
print(c.base is a) # True
print(c.flags.owndata) # False
c.shape = (2, 6)
print(a.shape) # (3, 4)
c[0, 4] = 1234
print(a)
-
数组深复制
深复制会创建一个新的数组对象,新的数组对象有独立的属性和数据。深复制数组用copy()
函数。
import numpy as np
a = np.arange(12).reshape(3, 4)
d = a.copy()
print(d is a) # False
print(d.base is a) # False
d[0, 0] = 9999
print(a)