码迷,mamicode.com
首页 > 其他好文 > 详细

numpy简单入门

时间:2019-08-02 11:12:41      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:倒数   nump   space   五个   col   pac   port   为什么   显示   

numpy数以数组为对象,将各种数据转化成数组,因此,我们学习的也就是数组了,实际上它被称之为 ndarrays。

创建一个数组:

import numpy as np

my_array = np.array([1, 2, 3, 4, 5])
print(my_array)
print(my_array.shape)

 

创建全部为0 的数组:

import numpy as np

my_zeros_array = np.zeros(5)
print(my_zeros_array)

创建数组:

import numpy as np
# 用列表生成数组
a = np.array([0, 1, 2, 3, 4])
# 用元组生成数组
b = np.array((0, 1, 2, 3, 4, 5))
# 产生0到4的整数数组,包头不包尾
c = np.arange(5)
# 产生0到2*np.pi的等差数列,并且一共五个,可以得出差值为2*np.pi/(5-1) = 1.5707963267948966
d = np.linspace(0, 2*np.pi, 5)

print(a)
print(b)
print(c)
print(d)

 

多维数组:

import numpy as np


# MD Array,
a = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28 ,29, 30],
              [31, 32, 33, 34, 35]])

# 以0作为数组的下标
print(a[0, 0])
# 可以使用负数倒数去取值
print(a[-1, -1])
# 数组切片是包头不包尾
print(a[2, 1:4])
# 对比一下这个跟原生的python规则一致
d = [1, 2, 3, 4, 5]
print(d[1:4])

数组的属性:

import numpy as np


# Array properties,
a = np.array([[11, 23, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 35]])

# <class ‘numpy.ndarray‘>
print(type(a))

# object 这个不准确,有时候是int32 有时候是int64 还有的是其他float,string等这个是根据这个数组的值决定
print(a.dtype)  # int32
# 1、如果里面的额数值都是int并且值不大于-2^31 ~ 2^31-1次方=4294967295,由于则显示为int32
# 来感受一下吧
# int32
a = np.array([[11, 23, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 2147483647]])
print(a.dtype)
# int64
a = np.array([[11, 23, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 2147483648]])
print(a.dtype)
# 那么,64的极限在哪里?你可能想到了,就是-2^63 ~ 2^63-1
a = np.array([[11, 23, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 2**63-1]])
print(a.dtype)
# 比int还要大一点呢?那就是float64了
a = np.array([[11, 23, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 2**63]])
print(a.dtype)
# 比float大一点点呢?那就是object了
a = np.array([[11, 23, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 2**64]])
print(a.dtype)

在这里我要强行解释一波,哪里不对的地方请各位道友多多指出

1、为什么int32是用2^32次方的算数呢?因为计算机中都是由0或1组成的数据,也就是两种情况(2就被推出来送命啦),而32是表示32位的意思,那“位”又是什么?位是计算机的最小存储单元(也就是存放0或1 的那个单元,你可以理解成牢房),8位为一个字节,因此int32又称4个字节。字节是计算机中的最小单位。

  那为什么是-2^31~2^31-1这个范围呢?而不是0~2^32-1这个范围呢?你的理解非常正确,无符号整型就是这个范围,那就好理解了,因为有正负号,所以就是-2^31~2^31-1。

  还有,为什么是-2^31~2^31-1而不是-2^31~2^31呢?都说对半分嘛,怎么正数反而要减去一个1呢?没错,你的怀疑不无道理,可以这样就有一个棘手的问题,1可以表示位00000000 00000000 0000000 00000001 ,而-1可以表示为 10000000 00000000 00000000 00000001,那么0呢?当然,0有两种情况-0和0,你可能很疑惑,怎么有-0呢?没办法还真的有。因此-0和0占去一位都是0,所以就需要负数或者正数减去一个1。int64也一样。

2、我也有个疑问,为什么float取值范围要比int64还要大?因为他们都是64位存储对吧?而且float类型还要用一位来记录小数点,没错吧!

  我也是想当然,不过如果我们学过C或者更加底层的汇编,你就会发现,浮点的存储跟整型不一样,他是可能损失精度的,比如1000000 整型就傻傻的将所有1000000

 

先不聊了,老板发现我闲着没事干,又安排新活了。

numpy简单入门

标签:倒数   nump   space   五个   col   pac   port   为什么   显示   

原文地址:https://www.cnblogs.com/hardykay/p/11287040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!