当一个数组构建好后,我们看看关于数组本身的操作又有哪些属性和函数:
In [24]: arr3
Out[24]:
array([[ 1, 1, 2, 3],
[ 5, 8, 13, 21],
[ 34, 55, 89, 144]])
In [25]: arr3.shape #shape方法返回数组的行数和列数
Out[25]: (3, 4)
In [26]: arr3.dtype #dtype方法返回数组的数据类型
Out[26]: dtype('int32')
In [27]: a = arr3.ravel() #通过ravel的方法将数组拉直(多维数组降为一维数组)
In [28]: a
Out[28]: array([ 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144])
In [29]: b = arr3.flatten() #通过flatten的方法将数组拉直
In [30]: b
Out[30]: array([ 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144])
两者的区别在于ravel方法生成的是原数组的视图,无需占有内存空间,但视图的改变会影响到原数组的变化。而flatten方法返回的是真实值,其值的改变并不会影响原数组的更改。
通过下面的例子也许就能明白了:
In [31]: b[:3] = 0
In [32]: arr3
Out[32]:
array([[ 1, 1, 2, 3],
[ 5, 8, 13, 21],
[ 34, 55, 89, 144]])
通过更改b的值,原数组没有变化。
In [33]: a[:3] = 0
In [34]: arr3
Out[34]:
array([[ 0, 0, 0, 3],
[ 5, 8, 13, 21],
[ 34, 55, 89, 144]])
a的值变化后,会导致原数组跟着变化。
In [35]: arr4
Out[35]:
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
In [36]: arr4.ndim #返回数组的维数
Out[36]: 2
In [37]: arr4.size #返回数组元素的个数
Out[37]: 12
In [38]: arr4.T #返回数组的转置结果
Out[38]:
array([[ 1, 5, 9],
[ 2, 6, 10],
[ 3, 7, 11],
[ 4, 8, 12]])
如果数组的数据类型为复数的话,real方法可以返回复数的实部,imag方法返回复数的虚部。








暂无数据