numpy 创建ndarray(from existing data)

Posted gengyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy 创建ndarray(from existing data)相关的知识,希望对你有一定的参考价值。

1 numpy.array

array(object[, dtype=None, copy=True, order=‘K‘, subok=False, ndmin=0])

2 numpy.asarray

asarray(a[, dtype=None, order=None])

将(列表、元组及其嵌套结构)数据a转换成ndarray

返回ndarray数据

1 当a为元组、列表array时

返回值值与输入值不相同

import numpy as np
a = [1,2]
b = np.asarray(a)
print(a) #[1, 2]
print(b) #[1 2]

2 当a为ndarray且不做任何改变时

原数据a与返回值为同一个地址

import numpy as np
a = np.array([1,2])
b = np.asarray(a)
a += 2
print(a) #[3 4]
print(b) #[3 4]
print(a is b)  #True

3 当a为ndarray且改变数据结构时

复制一份数据

import numpy as np
a = np.array([1,2],dtype=np.float32)
b = np.asarray(a,dtype=i4)
a += 2
print(a) #[3. 4.]
print(b) #[1 2]
print(a is b)  #False

总之,可理解为不改变元数据时,为同一个数据地址,当改变元数据时,返回值会复制元数据并进行asarray格式化。

3 numpy.frombuffer

frombuffer(buffer[, dtype=float, count=-1, offset=0])

将缓冲区解释为一维数组。

暴露缓冲区接口的任何对象都用作参数来返回ndarray

buffer - 一个暴露在缓冲取接口的对象

dtype - 返回ndarray的数据类型,默认float

count - 读取数据数量,默认-1,也即读取所有数据 int数据类型

offset - 读取数据的起始位置(偏移量)

返回值ndarray

import numpy as np
s = hello world
a = np.frombuffer(s,dtype=S1,count=5,offset=6)
print(a)
# 报错:AttributeError: ‘str‘ object has no attribute ‘__buffer__‘

一直没有弄明白,一直报错,要不就是 itemsize cannot be zero in type 

 

以上是关于numpy 创建ndarray(from existing data)的主要内容,如果未能解决你的问题,请参考以下文章

numpy基础——ndarray对象

NumPy之:ndarray多维数组操作

AttributeError:'numpy.ndarray'对象没有属性'units'

创建没有固定第二维的3D numpy.ndarray

NumPy之:ndarray多维数组操作

NumPy学习:创建ndarray数组(linespace,arange,uniform,normal)