1-100之间产生随机数20个,存数组a(4*5)中,把每一行最大值替换为1,每一行最小值替换为0,用python的numpy写出来
时间: 2024-10-09 13:09:35 浏览: 69
可以使用Python的NumPy库来实现这个需求。首先,你需要生成一个1到100之间的随机整数数组,然后找到每行的最大值和最小值,最后对数组进行条件赋值操作。以下是具体的代码:
```python
import numpy as np
# 生成20个1到100的随机数
random_numbers = np.random.randint(1, 101, (4, 5))
# 找出每行的最大值和最小值
max_values = random_numbers.max(axis=1)
min_values = random_numbers.min(axis=1)
# 将最大值替换为1,最小值替换为0
random_numbers[random_numbers == max_values[:, None]] = 1 # 使用None扩展维度
random_numbers[random_numbers == min_values[:, None]] = 0
print(random_numbers)
```
这段代码首先创建了一个4行5列的数组,接着分别计算了每行的最大值和最小值,并将这两个值应用到原始数组上,实现了题目的要求。
相关问题
①使用np.random.randint()创建一个5*5的1-50之间随机数数组a,将a中的所有奇数替换为 0,将a中大于等于30的数组替换为1; ② 分别按行和列方向求数组a的最大值、最小值、极差、百分位数、中值、平均值;
好的,让我来回答你的问题。
①这是一个非常有趣的编程问题,可以使用以下代码来解决:
import numpy as np
a = np.random.randint(1, 51, (5, 5))
print("原始数组:\n", a)
a[a % 2 == 1] = 0
a[a >= 30] = 1
print("替换后的数组:\n", a)
对于第二个问题,可以使用以下代码来解决:
# 按行方向求最大值、最小值、极差、百分位数、中值、平均值
print("按行方向求解:")
print("最大值:", np.max(a, axis=1))
print("最小值:", np.min(a, axis=1))
print("极差:", np.ptp(a, axis=1))
print("百分位数:", np.percentile(a, [25, 50, 75], axis=1))
print("中值:", np.median(a, axis=1))
print("平均值:", np.mean(a, axis=1))
# 按列方向求最大值、最小值、极差、百分位数、中值、平均值
print("按列方向求解:")
print("最大值:", np.max(a, axis=0))
print("最小值:", np.min(a, axis=0))
print("极差:", np.ptp(a, axis=0))
print("百分位数:", np.percentile(a, [25, 50, 75], axis=0))
print("中值:", np.median(a, axis=0))
print("平均值:", np.mean(a, axis=0))
希望这些代码可以帮助你解决问题。
用随机数对象产生0---100范围内的不同整数,用以初始化一个M*N的二维数组(M*N<100),然后编程找出二维数组中的最大数和最小数,并将其交换位置。要求输出原始二维数组及交换后的二维数组。
### 回答1:
下面是一个 Python 代码实现:
```
import random
M = int(input("请输入 M 的值: "))
N = int(input("请输入 N 的值: "))
# 初始化二维数组
arr = [[random.randint(0, 100) for j in range(N)] for i in range(M)]
# 输出原始二维数组
print("原始二维数组:")
for row in arr:
print(row)
# 找出二维数组中的最大数和最小数
min_val = arr[0][0]
max_val = arr[0][0]
min_row, min_col = 0, 0
max_row, max_col = 0, 0
for i in range(M):
for j in range(N):
if arr[i][j] < min_val:
min_val = arr[i][j]
min_row, min_col = i, j
if arr[i][j] > max_val:
max_val = arr[i][j]
max_row, max_col = i, j
# 交换位置
arr[min_row][min_col], arr[max_row][max_col] = arr[max_row][max_col], arr[min_row][min_col]
# 输出交换后的二维数组
print("交换后的二维数组:")
for row in arr:
print(row)
```
该代码首先用随机数初始化一个 M×N 的二维数组,然后找出二维数组中的最大数和最小数,最后交换它们的位置并输出原始和交换后的二维数组。
### 回答2:
首先,我们可以通过使用随机数对象来产生0到100之间的不同整数,并将其用于初始化一个M*N的二维数组。这可以通过嵌套循环来完成,外层循环控制行数,内层循环控制列数。在每个位置上,我们生成一个随机数并将其存储在数组中。
接下来,我们需要找出二维数组中的最大数和最小数,并将它们的位置交换。我们可以使用两个变量来存储最大数和最小数的值,然后在遍历数组时,将遇到的数与这两个变量进行比较。如果遇到比最大数更大的数,则更新最大数的值;如果遇到比最小数更小的数,则更新最小数的值。
完成遍历后,我们可以使用另一个变量来交换最大数和最小数的位置。这可以通过嵌套循环来实现,外层循环控制行数,内层循环控制列数。在每个位置上,当我们找到最大数时,我们将其值替换为最小数的值,并将最小数的值替换为最大数的值。
最后,我们输出原始二维数组及交换后的二维数组。这可以通过再次使用嵌套循环来完成,在每个位置上,我们打印数组中的值,并在每一行结束时换行。
下面是一个可能的实现:
```python
import random
M = 3
N = 4
# 初始化二维数组
arr = [[0] * N for _ in range(M)]
# 生成0-100范围内的不同整数并初始化二维数组
unique_nums = random.sample(range(101), M * N)
index = 0
for i in range(M):
for j in range(N):
arr[i][j] = unique_nums[index]
index += 1
# 寻找最大数和最小数,并交换位置
min_num = arr[0][0]
max_num = arr[0][0]
min_row = 0
min_col = 0
max_row = 0
max_col = 0
for i in range(M):
for j in range(N):
if arr[i][j] < min_num:
min_num = arr[i][j]
min_row = i
min_col = j
if arr[i][j] > max_num:
max_num = arr[i][j]
max_row = i
max_col = j
# 交换最小数和最大数的位置
arr[min_row][min_col], arr[max_row][max_col] = arr[max_row][max_col], arr[min_row][min_col]
# 输出原始二维数组
print("原始二维数组:")
for i in range(M):
for j in range(N):
print(arr[i][j], end=' ')
print()
# 输出交换后的二维数组
print("交换后的二维数组:")
for i in range(M):
for j in range(N):
print(arr[i][j], end=' ')
print()
```
注意:由于随机数的生成很难保证绝对的不同,因此可能会出现重复的数字。在代码中,我们使用了`random.sample()`函数来生成不同的数字,但请注意并不是完全保证不重复。
### 回答3:
首先,我们可以使用随机数对象生成0到100之间的不同整数来初始化一个M*N的二维数组。假设M=3,N=4,我们可以得到以下原始二维数组:
原始数组:
[[5, 34, 21, 70],
[89, 41, 63, 17],
[72, 95, 10, 49]]
然后,我们需要找到二维数组中的最大数和最小数,并将它们的位置进行交换。
最大数为95,位于数组下标[2, 1]处;
最小数为5,位于数组下标[0, 0]处。
交换它们的位置后得到新的二维数组:
交换后数组:
[[95, 34, 21, 70],
[89, 41, 63, 17],
[72, 5, 10, 49]]
最后,我们将原始二维数组和交换后的二维数组输出。
原始二维数组:
[[5, 34, 21, 70],
[89, 41, 63, 17],
[72, 95, 10, 49]]
交换后的二维数组:
[[95, 34, 21, 70],
[89, 41, 63, 17],
[72, 5, 10, 49]]
阅读全文