将numpy数组reshape
时间: 2023-05-23 16:06:59 浏览: 104
成另一个形状时,如何确定新形状中的数量?
A:可以使用numpy的reshape函数将数组重新构造为新的形状。在指定新形状时,可以通过使用-1来自动确定新形状中的数量。如果在指定新形状时,只给出了几个维度大小,而没有给出其他维度的大小,则可以使用-1来自动计算剩余的维度大小。例如,将一个10x10的数组重构成一个20x5的数组时,可以这样进行reshape:
```
import numpy as np
a = np.zeros((10, 10))
b = a.reshape((20, -1))
print(b.shape)
```
输出:(20, 5)
在这个例子中,我们使用-1来自动计算新形状中的行数(20),并且使用5来表示新形状中的列数。因此,新形状中的数量为20 * 5 = 100。
相关问题
numpy数组reshape
可以使用numpy中的reshape()方法来改变数组的形状。首先,要随机生成一个4行3列的数组,可以使用以下代码:
```python
import numpy as np
from numpy import random as nr
r = nr.randint(0,10,size=(4,3))
```
然后,可以使用reshape()方法对数组进行形状调整。reshape()方法有两种使用方式,一种是直接使用np.reshape()函数,另一种是使用数组对象的reshape()方法。我选择使用第二种方法,示例代码如下:
```python
r1 = r.reshape((-1,1),order='F')
r2 = r.reshape((3,4),order='A')
r3 = r.reshape((3,4),order='C')
r4 = r.reshape((3,4),order='F')
```
其中,参数`(-1,1)`表示将数组调整为1列,并保持行数自动计算。order参数可以指定不同的重排顺序,A表示按行优先,C表示按列优先,F表示按列优先的Fortran样式。此外,如果不指定order参数,默认按照C顺序进行重排。最后,可以使用print()函数打印出结果:
```python
print("r",r)
print("r1",r1)
print("r2",r2)
print("r3",r3)
print("r4",r4)
```
这样就可以将数组r以不同的形状进行重排并打印出来。
把numpy数组转化为字符串在转化回numpy数组的代码
可以使用numpy提供的函数`numpy.array2string()`和`numpy.fromstring()`将numpy数组转化为字符串和将字符串转化为numpy数组。
示例代码:
```python
import numpy as np
# 创建一个numpy数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 将numpy数组转化为字符串
arr_str = np.array2string(arr)
# 输出字符串
print(arr_str)
# 输出:[[1 2 3]\n [4 5 6]]
# 将字符串转化为numpy数组
arr_from_str = np.fromstring(arr_str[1:-1], sep=' ').reshape(arr.shape)
# 输出numpy数组
print(arr_from_str)
# 输出:[[1 2 3]
# [4 5 6]]
```
在将numpy数组转化为字符串的时候,我们使用了`array2string()`函数。该函数可以将numpy数组转化为字符串,其中可以设置多个参数来控制字符串的输出格式,比如设置分隔符、换行符、缩进等等。
在将字符串转化为numpy数组的时候,我们使用了`fromstring()`函数。该函数可以将字符串转化为numpy数组,其中需要指定字符串分隔符。由于转化出来的numpy数组是一维的,我们需要使用`reshape()`函数将其转化为原来的维度。在实际使用中,需要注意字符串的格式和numpy数组的形状是否一致,否则会出现错误。
阅读全文