我爱编程

Numpy教程(3)

2017-11-15  本文已影响0人  孙宏志

1. ndarray属性

a = np.array([
    [1,2],
    [3,4],
    [5,6],
    [7,8]
])

print("维度的数量",a.ndim)
print("数组的形状",a.shape)
print("数组的元素类型",a.dtype)
print("数组的元素数量",a.size)
image.png

2. ndarray中元素数据类型

比如Python的float数据类型(双精度浮点值),需要占用8个字节(86位),因此在Numpy中记为float64。

image.png

3. ndarray修改形状

直接修改数组ndarray的shape的值,要求修改后乘积不变。
直接使用reshape函数创建一个改变尺寸的新数组,原数组的shape保持不变,但是新数组和原数组共享一个内存空间,也就是修改任何一个数组中的值都会对另外一个产生影响,另外要求新数组的元素个数和原数组一致。

  1. 直接修改shape的值
    这种操作会直接修改原数组的形状。


    image.png
  2. 使用reshape方法修改形状
  • -1 表示当前维度的元素个数,自动计算,会根据数组元素的个数,和已经传入的数值,来判断-1位置的值应该填写的数字。
  • 这种操作不会修改原数组的形状,返回一个修改形状后的新的数组。


    image.png
import numpy as np
a = np.arange(1,25,2)    #生成一个从1开始到25结尾(不包含25),步长为2的一维数组。
print(a)                 #打印生成的数组
print(a.size)            #打印数组的大小

b = a.reshape(2,6)       #通过reshape函数根据原数组元素内容生成一个新的(2,6)的二维数组
print(b)                 #打印新生的数组
print(b.size)            #打印新数组大小
print(a)                 #打印原数组

b[0][1] = 30             #修改新数组中第一行,第二列的数值为30
print(b)                 #打印新数组
print(a)                 #打印原数组,数值根据新数组的变化,一起改变了。

print(a.reshape(3,-1))   #通过-1来确定列的数目

print(a.reshape(-1,3))   #通过-1来确定行的数目

a.shape                  #打印原数组的形状,确定原数组的形状没有变更

image.png
上一篇下一篇

猜你喜欢

热点阅读