numpy创建数组与打印

本篇文章主要是讲解numpy的创建与打印输出,首先导入numpy库

import numpy as np

用numpy创建数组的几种方式

  1. 使用array函数从常规Python列表或元组中创建数组。得到的数组的类型是从Python列表中元素的类型推 导出来的
# a = np.array(1,2,3,4)  一个常见的错误,就是调用array的时候传入多个数字参数,而不是提供单个数字的列表类型作为参数。
a = np.array([2,3,4])
print("a",a,a.dtype)
b = np.array([1.2, 3.5, 5.1])
print("b",b,b.dtype)
#array 还可以将序列的序列转换成二维数组,将序列的序列的序列转换成三维数组,等等。
b = np.array([(1.5,2,3), (4,5,6)])
print("b",b,b.dtype)
#也可以在创建时显式指定数组的类型
c = np.array( [ [1,2], [3,4] ], dtype=complex )
print("c",c,c.dtype,c.itemsize)

运行结果如下:
a [2 3 4] int32
b [1.2 3.5 5.1] float64
b [[1.5 2. 3. ]
[4. 5. 6. ]] float64
c [[1.+0.j 2.+0.j]
[3.+0.j 4.+0.j]] complex128 16

  1. 为了创建数字组成的数组,NumPy提供了一个类似于range的函数arange,该函数返回数组而不是列表。
a=np.arange( 10, 30, 5 )#包含起始值(默认值是0),不包含终止值,最后一个参数是步长,默认值是1
print(type(a),a)#[10 15 20 25]
a=np.arange( 0, 2, 0.3  )#包含起始值,不包含终止值,最后一个参数是步长
print(type(a),a)#[0.  0.3 0.6 0.9 1.2 1.5 1.8]

运行结果如下:
<class 'numpy.ndarray'> [10 15 20 25]
<class 'numpy.ndarray'> [0. 0.3 0.6 0.9 1.2 1.5 1.8]

3.针对浮点数,通常最好使用linspace函数来明确传入我们想要的元素数量

from numpy import pi
import matplotlib.pyplot as plt#约定俗成的写法plt ,Matplotlib程序包后续会讲到
num=np.linspace( 0, 2, 9 ) # 9 numbers from 0 to 2
print(num.dtype,num)
x = np.linspace( 0, 2*pi, 100 )        # useful to evaluate function at lots of points
f = np.sin(x)
plt.plot(x,f)
plt.show()

运行结果如下:
float64 [0. 0.25 0.5 0.75 1. 1.25 1.5 1.75 2. ]


image.png

4.通常,数组的元素最初是未知的,但它的大小是已知的,NumPy提供了几个函数来创建具有初始占位符内容的数组。这就减少了数组增长的必要,因为数组增长的操作花费很大

#函数zeros创建一个由0组成的数组,
a=np.arange(15).reshape(3,5)
zero = np.zeros((3,4))
print(zero.dtype,zero)
zeros_like=np.zeros_like(a)#带like的用参数a的维度
print(zeros_like.dtype,zeros_like)
#函数 ones创建一个完整的数组,
ones = np.ones((3,4))
print(ones.dtype,ones)
#函数empty 创建一个数组,其初始内容是随机的,取决于内存的状态。默认情况下,创建的数组的dtype是 float64 类型的。
empty = np.empty((3,4))
print(empty.dtype,empty)

运行结果如下:
float64 [[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
int32 [[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
float64 [[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
float64 [[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]

数组的打印

1.打印数组的各种属性

a=np.arange(15).reshape(3,5)
#ndarray.ndim - 数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank
print("数组的轴(维度)的个数:",a.ndim)
#ndarray.shape - 数组的维度。这是一个整数的元组,表示每个维度中数组的大小
print("数组的维度:",a.shape)
#ndarray.size - 数组元素的总数。这等于 shape 的元素的乘积
print("数组元素的总个数:",a.size)
#ndarray.dtype - 一个描述数组中元素类型的对象
print("数组元素的类型:",a.dtype)
#ndarray.itemsize - 数组中每个元素的字节大小。
#例如,元素为 float64 类型的数组的 itemsize 为8(=64/8),而 complex32 类型的数组的 itemsize 为4(=32/8)。
#它等于 ndarray.dtype.itemsize
print("数组中每个元素的字节大小:",a.itemsize,a.dtype.itemsize)
#ndarray.data - 该缓冲区包含数组的实际元素。class 'memoryview'
print("该缓冲区包含数组的实际元素:",a.data,type(a.data))

输出结果如下:
数组的轴(维度)的个数: 2
数组的维度: (3, 5)
数组元素的总个数: 15
数组元素的类型: int32
数组中每个元素的字节大小: 4 4
该缓冲区包含数组的实际元素: <memory at 0x00000091BD96CEA0> <class 'memoryview'>

  1. 打印数据
#将一维数组打印为行,将二维数据打印为矩阵,将三维数据打印为矩数组表
c = np.arange(24).reshape(2,3,4) 
print(c)
#如果数组太大而无法打印,NumPy会自动跳过数组的中心部分并仅打印角点
print(np.arange(10000))
print(np.arange(10000).reshape(100,100))
#要禁用此行为并强制NumPy打印整个数组,可以使用更改打印选项set_printoptions。
import sys
# np.set_printoptions(threshold=sys.maxsize)       # sys module should be imported禁用
np.set_printoptions(threshold=1000)       # sys module should be imported 解除禁用
print(np.arange(100).reshape(10,10))

打印结果如下:
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]

[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
[ 0 1 2 ... 9997 9998 9999]
[[ 0 1 2 ... 97 98 99]
[ 100 101 102 ... 197 198 199]
[ 200 201 202 ... 297 298 299]
...
[9700 9701 9702 ... 9797 9798 9799]
[9800 9801 9802 ... 9897 9898 9899]
[9900 9901 9902 ... 9997 9998 9999]]
[[ 0 1 2 3 4 5 6 7 8 9]
[10 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 36 37 38 39]
[40 41 42 43 44 45 46 47 48 49]
[50 51 52 53 54 55 56 57 58 59]
[60 61 62 63 64 65 66 67 68 69]
[70 71 72 73 74 75 76 77 78 79]
[80 81 82 83 84 85 86 87 88 89]
[90 91 92 93 94 95 96 97 98 99]]

注:本文参考:https://www.numpy.org.cn/user/quickstart.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容