import numpy as np
In [16]:
list=[1,2,3,4,5]array = np.array(list)array# 会自动做向下转换,type类型全转换掉,如果有一个为string串,其他的都会转换成串
Out[16]:
array([1, 2, 3, 4, 5])
对于ndarray结构来说,里面所有的元素必须是同一类型的,如果不是的话会自动向下进行转换
In [12]:
type(array)Out[12]:
numpy.ndarray
In [13]:
array.dtypeOut[13]:
dtype('<U11')
In [17]:
array.itemsizeOut[17]:
4
In [18]:
array.shape#维度是多少行多少列Out[18]:
(5,)
In [19]:
array.size#里边有多少个元素Out[19]:
5
In [20]:
array.ndim#是几维的Out[20]:
1
In [22]:
# 填充值array.fill(0)arrayOut[22]:
array([0, 0, 0, 0, 0])
索引与切片:跟python一样In [23]:
list=[1,2,3,4,5]array = np.array(list)arrayarray[0]Out[23]:
1
In [24]:
array[1:3]
Out[24]:
array([2, 3])
In [25]:
array[-2:]Out[25]:
array([4, 5])
矩阵格式(多维的形式)In [27]:
array = np.array([[1,2,3],
[4,5,6],[7,8,9]])arrayOut[27]:
array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
In [28]:
array.shapeOut[28]:
(3, 3)
In [29]:
array.size
Out[29]:
9
In [30]:
array.ndimOut[30]:
2
In [31]:
array[1,1]Out[31]:
5
In [32]:
array[1,1]=10arrayOut[32]:
array([[ 1, 2, 3], [ 4, 10, 6], [ 7, 8, 9]])
In [33]:
#取第二行值array[1]Out[33]:
array([ 4, 10, 6])
In [34]:
#取一列array[:,1]Out[34]:
array([ 2, 10, 8])
In [37]:
#第0行的0,1两个array[0,0:2]Out[37]:
array([1, 2])
(array2=array)执行赋值的时候,array2不是重新分配内存,而是array2指向array但是使用array.copy()就是重新分内存In [38]:
array2=arrayarray2Out[38]:
array([[ 1, 2, 3], [ 4, 10, 6], [ 7, 8, 9]])In [ ]:
In [39]:
array2[1,1]=100array2Out[39]:
array([[ 1, 2, 3], [ 4, 100, 6], [ 7, 8, 9]])
In [40]:
arrayOut[40]:
array([[ 1, 2, 3], [ 4, 100, 6], [ 7, 8, 9]])
In [42]:
array3=array.copy()array3[1,1]=1000arrayOut[42]:
array([[ 1, 2, 3], [ 4, 100, 6], [ 7, 8, 9]])
等差数组,从0 到100,不包括100,步长为10In [43]:
array = np.arange(0,100,10)arrayOut[43]:
array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
对应值,array和mask对应,mask当索引In [49]:
mask = np.array([0,0,0,1,1,1,0,1,0,9],dtype=bool)maskOut[49]:
array([False, False, False, True, True, True, False, True, False, True])
In [50]:
array[mask]Out[50]:
array([30, 40, 50, 70, 90])
让大于0.5的随机数返回出来In [52]:
random_array = np.random.rand(10)random_arrayOut[52]:
array([0.07269206, 0.30767692, 0.87505875, 0.40279648, 0.45689306, 0.98875781, 0.98477825, 0.30104307, 0.03657114, 0.39355438])
In [54]:
mask = random_array > 0.5maskOut[54]:
array([False, False, True, False, False, True, True, False, False, False])
In [55]:
random_array[mask]Out[55]:
array([0.87505875, 0.98875781, 0.98477825])
In [56]:
# 找到大于0.5的位置np.where(random_array > 0.5)Out[56]:
(array([2, 5, 6], dtype=int64),)
In [58]:
random_array[np.where(random_array > 0.5)]Out[58]:
array([0.87505875, 0.98875781, 0.98477825])
In [ ]:
In [59]:
array = np.array([1,2,3,4,5],dtype=np.float32)arrayOut[59]:
array([1., 2., 3., 4., 5.], dtype=float32)
In [60]:
array.dtypeOut[60]:
dtype('float32')
In [61]:
#所占字节array.nbytesOut[61]:
20
In [64]:
# 里边什么类型都有,使用object类型array = np.array([1,3.5,10,'str'],dtype=object)arrayOut[64]:
array([1, 3.5, 10, 'str'], dtype=object)
In [65]:
array*2Out[65]:
array([2, 7.0, 20, 'strstr'], dtype=object)
In [79]:
# asarray重新指定dtype,全换成字符串np.asarray(array,dtype = np.ndarray)Out[79]:
array(['1', '3.5', '10', 'str'], dtype=object)
In [85]:
# 不会影响原始的,改变的是asarray生成的东西array = np.array([1,2,3,4],dtype = int)array2 = np.asarray(array,dtype = np.float32)array2arrayOut[85]:
arra