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...