numpy中array和asarray的區別

2021-08-21 03:51:30 字數 1941 閱讀 7802

array和asarray都可以將結構資料轉化為ndarray,但是主要區別就是當資料來源是ndarray時,array仍然會copy出乙個副本,占用新的記憶體,但asarray不會。

例子1:

import numpy as np

#example 1:

data1=[[1,1,1],[1,1,1],[1,1,1]]

arr2=np.array(data1)

arr3=np.asarray(data1)

data1[1][1]=2

print('data1:\n', data1)

print('arr2:\n', arr2)

print('arr3:\n', arr3)

輸出:

data1:

[[1, 1, 1], [1, 2, 1], [1, 1, 1]]

arr2:

[[1 1 1]

[1 1 1]

[1 1 1]]

arr3:

[[1 1 1]

[1 1 1]

[1 1 1]]

例子2:

import numpy as np

# example 1:

data1 = np.ones((3,3))

arr2 = np.array(data1)

arr3 = np.asarray(data1)

data1[1]= 2

print('data1:\n', data1)

print('arr2:\n', arr2)

print('arr3:\n', arr3)

輸出:

data1:

[[1. 1. 1.]

[2. 2. 2.]

[1. 1. 1.]]

arr2:

[[1. 1. 1.]

[1. 1. 1.]

[1. 1. 1.]]

arr3:

[[1. 1. 1.]

[2. 2. 2.]

[1. 1. 1.]]

此時兩者才表現出區別。

官網的例子:

examples

convert a list into an array:

>>> a = [1, 2]

>>> np.asarray(a)

array([1, 2])

existing arrays are not copied:

>>> a = np.array([1, 2])

>>> np.asarray(a) is a

true

if dtype is set, array is copied only if dtype does not match:

>>> a = np.array([1, 2], dtype=np.float32)

>>> np.asarray(a, dtype=np.float32) is a

true

>>> np.asarray(a, dtype=np.float64) is a

false

contrary toasanyarray, ndarray subclasses are not passed through:

>>> issubclass(np.matrix, np.ndarray)

true

>>> a = np.matrix([[1, 2]])

>>> np.asarray(a) is a

false

>>> np.asanyarray(a) is a

true

論numpy中matrix 和 array的區別

論numpy中matrix 和 array的區別 csdn部落格 2014年03月07日 16 26 55 numpy matrices必須是2維的,但是 numpy arrays ndarrays 可以是多維的 1d,2d,3d nd matrix是array的乙個小的分支,包含於array。所以...

numpy中matrix 和 array的區別

numpy matrices必須是2維的,但是 numpy arrays ndarrays 可以是多維的 1d,2d,3d nd matrix是array的乙個小的分支,包含於array。所以matrix 擁有array的所有特性。所以 在sklearn 中如果傳入的特徵只有乙個,要使用x.valu...

numpy中array和mat的區別

mat 函式與array 函式生成矩陣所需的資料格式有區別 1 mat 函式中資料可以為字串以分號 分割,或者為列表形式以逗號 分割。而array 函式中資料只能為後者形式。如mat 函式生成矩陣時一下兩種方式都正確。a numpy.mat 1 3 5 7 b numpy.mat 2 4 6 8 a...