2024-05-04 11:16:38 发布
网友
我有一个numpy数组包含:
[1, 2, 3]
我要创建一个数组,其中包含:
[1, 2, 3, 1]
也就是说,我想将第一个元素添加到数组的末尾。
我试过显而易见的:
np.concatenate((a, a[0]))
但我说ValueError: arrays must have same number of dimensions时出错
ValueError: arrays must have same number of dimensions
我不明白-这两个数组都是一维数组。
当只追加一次或偶尔追加一次时,在数组上使用np.append应该没问题。这种方法的缺点是每次调用一个全新的数组时都会为其分配内存。在为大量样本扩展数组时,最好是预先分配数组(如果知道总大小),或者追加到列表中,然后转换为数组。
np.append
使用np.append:
b = np.array([0]) for k in range(int(10e4)): b = np.append(b, k) 1.2 s ± 16.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
之后使用python list转换为数组:
d = [0] for k in range(int(10e4)): d.append(k) f = np.array(d) 13.5 ms ± 277 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
预分配numpy数组:
e = np.zeros((n,)) for k in range(n): e[k] = k 9.92 ms ± 752 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
当最终的大小是未知的时,预分配很困难,我试着以50块为单位进行预分配,但它并没有接近使用列表。
85.1 ms ± 561 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
append()创建一个新数组,该数组可以是带有附加元素的旧数组。
append()
我认为使用适当的方法添加元素更正常:
a = numpy.append(a, a[0])
a[0]不是数组,它是a的第一个元素,因此没有维度。
a[0]
a
尝试改用a[0:1],它将返回单个项数组中a的第一个元素。
a[0:1]
当只追加一次或偶尔追加一次时,在数组上使用
np.append
应该没问题。这种方法的缺点是每次调用一个全新的数组时都会为其分配内存。在为大量样本扩展数组时,最好是预先分配数组(如果知道总大小),或者追加到列表中,然后转换为数组。使用
np.append
:之后使用python list转换为数组:
预分配numpy数组:
当最终的大小是未知的时,预分配很困难,我试着以50块为单位进行预分配,但它并没有接近使用列表。
append()
创建一个新数组,该数组可以是带有附加元素的旧数组。我认为使用适当的方法添加元素更正常:
a[0]
不是数组,它是a
的第一个元素,因此没有维度。尝试改用
a[0:1]
,它将返回单个项数组中a
的第一个元素。相关问题 更多 >
编程相关推荐