码
import numpy as np
arr3 = np.array([], dtype=float)
val=1
for i in range(7):
if i == 0 or i == 3:
np.append(arr3,np.nan)
else:
np.append(arr3,val)
val+=1
arr3
产量
array([], dtype=float64)
当我运行此代码时,它不提供任何输出。我不知道原因。
请注意,因为numpy.append docs说附加不会就地发生,那就是numpy.append
return
s新阵列。考虑以下示例:
import numpy as np
arr = np.array([0],dtype='uint8')
arr2 = np.append(arr,1)
print(arr) #[0]
print(arr2) #[0 1]
您的代码应在更改以下行后生效:
np.append(arr3,np.nan)
至
arr3=np.append(arr3,np.nan)
和
np.append(arr3,val)
至
arr3=np.append(arr3,val)
列表追加比np.append
(或np.concatenate
上的任何其他变体)快。 List append就地工作,向现有列表添加“指针”。 np.concatenate
(即使有np.append
封面)每次调用都会创建一个新数组,需要一个完整的副本。如果必须迭代地构建数组,请使用列表:
In [85]: alist = []
In [86]: val=1
In [87]: for i in range(7):
...: if i==0 or i==3:
...: alist.append(np.nan)
...: else:
...: alist.append(val)
...: val +=1
...:
In [88]: alist
Out[88]: [nan, 1, 2, nan, 3, 4, 5]
In [89]: arr = np.array(alist)
In [90]: arr
Out[90]: array([nan, 1., 2., nan, 3., 4., 5.])