往期数据分析笔记
【笔记】python数据分析——numpy初识1
数组对象属性
数组对象属性一共有5个,它们分别是:
ndim
shape
size
dtyoe
itemsize
其中shape和dtype我们在第一节的时候就已经介绍过了
ndim属性
首先我们第一步就是导入numpy包
import numpy as np
接下来我们就看下ndim的作用
data1 = [[1,2,3,4],[5,6,7,8]]
arr1 = np.array(data1)
print(arr1)
print(arr1.ndim)
运行结果:
[[1 2 3 4]
[1 2 3 4]]
2
这个2就是我们对应的numpy数组的ndim属性,其实说白了,ndim这个属性指的是数组的质,也可以叫数据轴的个数,最好的记忆方法就是看两侧方括号的个数
size属性
print(arr1.size)
运行结果:8
size属性指的就是数组元素的个数,我们arr1中一共有8个值,所以这里运行结果是8
itemsize属性
print(arr1.itemsize)
运行结果:4
itemsize属性指的是我们创建的数组里面单个元素所占用的字节个数,这里为什么是4呢,因为现在arr1的dtype是int32,int32占用的就是四个字节,int16就是两个字节,int64就是八个字节
这个是可以修改的,你在定义numpy数组的时候就可以指定dtype,这样itemsize属性的值也会变
data1=[[1,2,3,4],[1,2,3,4]]
arr1=np.array(data1,dtype='int64')
print(arr1)
print(arr1.dtype)
print(arr1.itemsize)
这样修改一下dtype,itemsize属性值就变成了8,因为int64就是8个字节
为什么我们要使用itemsize呢
因为每个人的内存都是有限的,当我们后面做数据分析的时候,可能会导入大量数据,到时候可能会把内存挤爆
array中的ndmin参数
ndim和ndmin是不是感觉有那么一点点像,ndmin参数是用来指定数组最小的质的个数
data1=[[1,2,3,4],[1,2,3,4]]
arr1=np.array(data1,dtype='int64',ndmin=6)
print(arr1)
运行结果:
[[[[[[1 2 3 4]
[1 2 3 4]]]]]]
它增加了我们质的数量(也就是左右两边方括号的个数),如果ndmin的值是1或者2的话,它的值就不会增加,因为后面的数代表最小的质,如果你定义的质小于这个,它才会自己增加维度,如果你定义的数字大于或者等于你原有的,原来的质就不会改变
数组数据类型
numpy会为新建的numpy数组自动推断一个合适的数据类型
数组数据类型有:
int 整型
float 浮点数
complex 复数
bool 布尔型
string_ 字符串
object 对象
数据类型强制修改有两种方式
- dtype参数强制修改
data1=[[1.9,2,3,4],[1,2,3,4]]
arr1=np.array(data1,dtype='object')
print(arr1)
print(arr1.dtype)
运行结果:
[[1.9 2 3 4]
[1 2 3 4]]
object
- 函数的赋值方法
arr2 = arr1.astype('float64')
print(arr2)
运行结果:
[[1. 2. 3. 4.]
[5. 6. 7. 8.]]
注意:astype会形成一个新的数组,而在array中修改则是在原数组中改变
也就是说arr2又是一个新的数组
- 一个小的细节问题
data1=[[1.9,2,3,4],[1,2,3,4]]
arr1=np.array(data1)
print(arr1)
print(arr1.dtype)
运行结果:
[[1.9 2. 3. 4. ]
[1. 2. 3. 4. ]]
float64
如果我们的数据里面有一个浮点型的数,所有数据都会转换成浮点型,接下来大家想一下,如果我们强制转换类型成int32,是会四舍五入呢,还是会截取掉小数点后的呢
接下来我们看看
arr3=arr1.astype('int32')
print(arr1)
print(arr3)
运行结果:
[[1.9 2. 3. 4. ]
[1. 2. 3. 4. ]]
[[1 2 3 4]
[1 2 3 4]]
注意:如果原项目中有浮点型的数据,转换成整型之后会将小数点后的数截掉,并不会四舍五入
今日鸡汤
这世界上,从来不会无路可走,努力且自律的人,披荆斩棘,伤痕累累也会艰难的走过去。