猿问

创建二维 NumPy 数组 (Python)

NumPy 新手。


我在下面的np_2d 中创建了一个简单的二维数组。效果很好。


当然,我通常需要通过附加和/或连接现有数组来创建 Nd 数组,所以我接下来会尝试。


np.append 方法(带或不带轴参数)似乎没有做任何事情。


我尝试使用 .concantenate() 和/或简单地用 np 数组替换原始列表也失败了。


我敢肯定这是微不足道的...只是对我来说不是微不足道的 ATM。有人可以将我推向正确的方向吗?泰。


import numpy as np


# NumPy 2d array:

np_2d = np.array([[1.73, 1.68, 1.71, 1.89, 1.79], [65.4, 59.2, 63.6, 88.4, 68.7]])


print (np_2d) 


# [[ 1.73  1.68  1.71  1.89  1.79]

# [65.4  59.2  63.6  88.4  68.7 ]]


print (np_2d[1]) # second list


# [65.4 59.2 63.6 88.4 68.7]


np_2d_again = np.array([1.1, 2.2, 3.3])


np.append(np_2d_again, [4.4, 5.5, 6.6])

print(np_2d_again)


# wrong: [1.1 2.2 3.3], expect [1.1 2.2 3.3], [4.4, 5.5, 6.6]

# or MAYBE [1.1 2.2 3.3, 4.4, 5.5, 6.6]



np_2d_again = np.array([[1.1, 2.2, 3.3]])

np.concatenate(np_2d_again, np.array([4.4, 5.5, 6.6]))


# Nope: TypeError: only integer scalar arrays can be converted to a scalar index


print(np_2d_again)


np_height = np.array([1.73, 1.68, 1.71, 1.89, 1.79])

np_weight = np.array([65.4, 59.2, 63.6, 88.4, 68.7])


np2_2d_again = np.array(np_height, np_weight)


# Nope: TypeError: data type not understood


height = [1.73, 1.68, 1.71, 1.89, 1.79]

weight = [65.4, 59.2, 63.6, 88.4, 68.7]


np2_2d_again = np.array(height, weight)


# Nope: TypeError: data type not understood


千万里不及你
浏览 134回答 1
1回答

Helenr

对于此类问题,文档可能非常有用。在这里查看它们:numpy.appendnumpy.concatenate使用这些你会发现:In [2]: np_2d = np.array([[1.73, 1.68, 1.71, 1.89, 1.79], [65.4, 59.2, 63.6, 88.4, 68.7]])   ...: In [2]: np_2dOut[2]: array([[ 1.73,  1.68,  1.71,  1.89,  1.79],       [65.4 , 59.2 , 63.6 , 88.4 , 68.7 ]])注意输入到np.array. 它是一个列表,包含 2 个等长的列表。In [3]: np_2d_again = np.array([1.1, 2.2, 3.3])In [4]: np.append(np_2d_again, [4.4, 5.5, 6.6])Out[4]: array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])查看np.append文档。看看关于 raveling 怎么说?它将一个 (3,) 数组连接到另一个数组,结果是 (6,)。np.append名字很差,经常被误用。它不是列表追加的替代品。一方面,它没有就地运行。在您的 中np.concatenate(np_2d_again, np.array([4.4, 5.5, 6.6])),您会收到错误,因为它需要一个轴号作为第二个参数。重读文档。您需要提供要加入的数组的列表。 np.append可能误导了。正确的使用方法concatenate:In [6]: np.concatenate([np_2d_again, np.array([4.4, 5.5, 6.6])])Out[6]: array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])但由于两个输入都是 (3,),它们只能在 0 轴上连接,形成 (6,) 形状。np2_2d_again = np.array(np_height, np_weight)有一个类似的问题。第二个参数应该是一个 dtype,而不是另一个数组。你np.array第一次使用正确。In [7]: np.array([np_2d_again, np.array([4.4, 5.5, 6.6])])Out[7]: array([[1.1, 2.2, 3.3],       [4.4, 5.5, 6.6]])np.array沿新轴连接组件。它处理数组列表的方式与原始列表列表基本相同。np.stack是一个有用的前端concatenate,其行为类似于np.array(在使用轴时具有更大的灵活性):In [8]: np.stack([np_2d_again, np.array([4.4, 5.5, 6.6])])Out[8]: array([[1.1, 2.2, 3.3],       [4.4, 5.5, 6.6]])
随时随地看视频慕课网APP

相关分类

Python
我要回答