python - Numpy中的行加法或列加法
问题描述
这是numpy arrays的一般性能/优化问题。说,我有一个列形式的numpy数组天:
[['Day1']
['Day2']
['Day3']
['Day4']
['Day5']]
我想向其中添加存储在data中的新数据列。我应该使用:
1. Append column wise:
new_data = numpy.append(days, data, axis=1)
2. Append row wise:
days = numpy.transpose(days)
data = numpy.transpose(data)
new_data = numpy.append(days, data, axis=0)
new_data = numpy.transpose(new_data)
解决方案
制作列数组:
In [135]: days = np.array('Day1,Day2,Day3'.split(','))
In [136]: days
Out[136]: array(['Day1', 'Day2', 'Day3'], dtype='<U4')
In [137]: days = days[:,None]
In [138]: days
Out[138]:
array([['Day1'],
['Day2'],
['Day3']], dtype='<U4')
示例 2d 数据数组:
In [139]: data = np.arange(12).reshape(3,4)
如果数组已经具有正确的形状,请使用np.append
:
In [140]: np.append(days, data, axis=1)
Out[140]:
array([['Day1', '0', '1', '2', '3'],
['Day2', '4', '5', '6', '7'],
['Day3', '8', '9', '10', '11']], dtype='<U21')
但是,如果您查看np.append
代码,您会发现axis
它只是调用concatenate
. 这是所有这些的基本功能stacks
。(np.append
是一个名称不佳且构思不佳的封面)
In [141]: np.concatenate([days, data], axis=1)
Out[141]:
array([['Day1', '0', '1', '2', '3'],
['Day2', '4', '5', '6', '7'],
['Day3', '8', '9', '10', '11']], dtype='<U21')
还有一个连接列的封面:
In [142]: np.column_stack([days, data])
Out[142]:
array([['Day1', '0', '1', '2', '3'],
['Day2', '4', '5', '6', '7'],
['Day3', '8', '9', '10', '11']], dtype='<U21')
如果需要,它将在输入中重塑以作为列工作:
In [143]: np.column_stack([days, np.arange(3)])
Out[143]:
array([['Day1', '0'],
['Day2', '1'],
['Day3', '2']], dtype='<U21')
但请注意所有这些示例,结果是字符串 dtype。如果你想保留data
为数字,你不想使用任何这些。
推荐阅读
- flutter - 如何在颤动中调整画布对象/小部件的大小
- flutter - 将数据传递给提供者 - 在构建期间调用 setState() 或 markNeedsBuild()
- docker - 本地 Docker RabbitMQ - 连接超时
- reactjs - 为什么在反应中加载我的应用程序时我的页面是空白的
- python - 安装 python 3 后 httpie 仍然使用 python 2.7
- function - Julia中函数名称的大写
- c# - 写入 HttpContext 时出现 System.ObjectDisposedException
- php - 使用 PHP 获取 JSON 密钥
- c# - 如何永远重置和循环此计时器 Unity?
- reactjs - React - 道具不是一个函数